Baromètre RSE¶

In [ ]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 
import seaborn as sns

I) Phase préparatoire¶

A) Importation des données et création des dataframes¶

In [ ]:
from google.colab import files
uploaded = files.upload()
Upload widget is only available when the cell has been executed in the current browser session. Please rerun this cell to enable.
Saving df_2022_part1.csv to df_2022_part1.csv
Saving df_2022_part2.csv to df_2022_part2.csv
Saving df_2022_part3.csv to df_2022_part3.csv
In [ ]:
df_2022_part1 = df_2022_part1.rename(columns={"Quelle est votre *adresse email professionnelle* ?": "email"})
In [ ]:
df_2022 = pd.merge(df_2022_part1, df_2022_part2, on="email", how='left')
df_2022 = pd.merge(df_2022, df_2022_part3, on="email", how="left")
In [ ]:
df_2022.shape
Out[ ]:
(1559, 112)
In [ ]:
df_2022 = df_2022.drop(["Token_y", "name_y",	"name_entreprise",	"nom_de_famille_y",	"Submitted At_x"], axis=1)

II) Nettoyage du dataframe de 2022¶

Reprise du code de Franck pour le nettoyage + améliorations

In [ ]:
#Déplacement de l'ID en première colonne
first_column = df_2022.pop('Token')
df_2022.insert(0, 'Token', first_column)

df_2022.head()
In [ ]:
# Visualise and check NaN
plt.figure(figsize=(45,10))
sns.heatmap(df_2022.isna(), cmap="Blues_r", cbar=False)
plt.show() 
/usr/local/lib/python3.7/dist-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 127873 missing from current font.
  font.set_text(s, 0.0, flags=flags)
/usr/local/lib/python3.7/dist-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 127873 missing from current font.
  font.set_text(s, 0, flags=flags)
In [ ]:
# changement de nom pour les colonnes afin que cela soit plus facile à analyser
# Pour les questions simples, je laisse la question comme nom de colonne
# Pour les questions "multiples", je renomme les questions en "question_#_identifiant"
# la numérotation se base sur le Gsheet de Vendredi 

col_name_2022 = {"Submitted At": "submitted_at",
                 "Quel est le nom de votre *entreprise* ?": "nom_entreprise",
                 "Quel est votre *rôle* chez {{field:535b54cf-1d17-4acb-b449-f4a2e0d70888}} ?": "role",
                 "Combien de *collaborateurs* travaillent chez {{field:535b54cf-1d17-4acb-b449-f4a2e0d70888}} ?": "taille_entreprise",
                 "A quel *secteur* appartient {{field:535b54cf-1d17-4acb-b449-f4a2e0d70888}} ?": "secteur",
                 "Y a-t-il *une personne ou une équipe dédiée* à la RSE chez {{field:535b54cf-1d17-4acb-b449-f4a2e0d70888}}? Si oui, combien de personnes constituent cette équipe ?": "equipe_RSE",
                 "COMEX": "question_8_COMEX",
                 "Salariés": "question_8_salaries",
                 "Middle Management": "question_8_middle_management",
                 "Achats": "question_8_achats",
                 "RH": "question_8_RH",
                 "Communication / Marketing": "question_8_com_market",
                 "Commercial": "question_8_commercial",
                 "Production ": "question_8_prod",
                 "Finance / Administration": "question_8_finance_admin",
                 "Etat et collectivités publiques": "question_10_etat_co_publiques",
                 "Consommateurs / clients": "question_10_conso_clients",
                 "Sous-traitants": "question_10_ss_traitants",
                 "Candidats (recrutement)": "question_10_candidats",
                 "Citoyens proches de vos implantations": "question_10_citoyens",
                 "Actionnaires": "question_10_actionnaires",
                 "Entreprise à mission": "question_12_entreprise_mission",
                 "B Corp": "question_12_BCorp",
                 "Label Lucie": "question_12_Lucie",
                 "1% For The Planet (ou équivalent)": "question_12_1%",
                 "Loi ESUS": "question_12_esus",
                 "Marque employeur et fidélisation des talents ": "question_13_marque_employ",
                 "Image de marque et compétitivité": "question_13_image",
                 "Réponse à l’urgence sociale et environnementale": "question_13_urgence",
                 "Investisseurs": "question_13_invest", 
                 "Volonté de la direction": "question_13_volonte",
                 "Réponse aux obligations légales": "question_13_legales",
                 "Manque de temps / dépriorisation":"question_14_temps",
                 "Manque de budget": "question_14_budget", 
                 "Manque d'équipe": "question_14_equipe",
                 "Manque de connaissance des sujets": "question_14_connaissance",
                 "Difficulté d'impliquer le middle management": "question_14_m_management",
                 "Difficulté d'impliquer la direction": "question_14_direction", 
                 "Difficulté à embarquer les équipes opérationnelles": "question_14_ope", 
                 "Difficulté à animer la démarche sur le long terme": "question_14_long_terme",
                 "Difficulté de mesurer l'impact / le ROI": "question_14_impact", 
                 "Fresque (Climat, Océan, Forêts, Numérique, Egalité…)": "question_16_fresque",
                 "Formation ou autre atelier de sensibilisation": "question_16_atelier", 
                 "Compétition, jeux, challenges (Challenges Vendredi, Ma Petite Planète, Energic, …)": "question_16_jeux",
                 "Partage de contenus (articles, podcasts, vidéos…)": "question_16_partage",
                 "Affichage dans les locaux": "question_16_affiche",
                 "{{hidden:name_entreprise}} a-t-elle déjà mis en place des *actions d’engagement solidaire *ou de *philanthropie *?": "Avez-vous déjà mis en place des *actions d’engagement solidaire *ou de *philanthropie *?",
                 "Mécénat de compétences": "question_36_mecenat",
                 "Collectes de matériel ou produits": "question_36_collects",
                 "Mentorat (jeunes, demandeurs d'emploi...)": "question_36_mentorat",
                 "Mission coup de pouce en association": "question_36_missions",
                 "Dons financiers et arrondi sur salaire": "question_36_dons",
                 "Appels à projets": "question_36_projet",
                 "Evénements caritatifs (course solidaires…)": "question_36_events",
                 "Team-building solidaires": "question_36_teamB",
                 "Aide et insertion des réfugiés": "question_37_aide",
                 "Arts, culture et patrimoine": "question_37_art",
                 "Éducation et égalité des chances": "question_37_education",
                 "Égalité des genres": "question_37_egalite",
                 "Emploi et insertion professionnelle": "question_37_emploi",
                 "Entrepreneuriat et création d'activité": "question_37_entreprenariat",
                 "Environnement et biodiversité": "question_37_environnement",
                 "Handicap": "question_37_handicap",
                 "Lien social et intergénérationnel": "question_37_lien",
                 "Lutte contre les discriminations": "question_37_lutte",
                 "Pauvreté et précarité": "question_37_pauvrete",
                 "Protection des animaux": "question_37_protection",
                 "Santé": "question_37_sante",
                 "Solidarité internationale": "question_37_solidarite",
                 "On arrive à la toute fin ! Petite question bonus 🎁\n\nQuelle est *votre plus grande fierté* en matière de RSE et d'impact chez {{hidden:name_entreprise}} ?" : "Quelle est *votre plus grande fierté* en matière de RSE et d'impact"
                 }
In [ ]:
df_2022.rename(columns=col_name_2022, inplace=True)
In [ ]:
# Check des valeurs maquantes
def filling_factor(df):
    missing_df = df.isnull().sum(axis=0).reset_index()
    missing_df.columns = ['column_name', 'missing_count']
    missing_df['filling_factor'] = (df.shape[0]-missing_df['missing_count'])/df.shape[0]*100
    missing_df = missing_df.sort_values('filling_factor').reset_index(drop = True)
    return missing_df

filling_factor(df_2022)
Out[ ]:
column_name missing_count filling_factor
0 Votre entreprise s'est-elle fixée des *objecti... 1134 27.261065
1 Quels sujets abordez-vous avec vos équipes aut... 943 39.512508
2 Quelle est *votre plus grande fierté* en matiè... 877 43.745991
3 question_14_impact 845 45.798589
4 A quel *département* est intégrée l'équipe RSE ? 796 48.941629
... ... ... ...
91 question_12_BCorp 492 68.441309
92 question_12_entreprise_mission 492 68.441309
93 question_13_invest 492 68.441309
94 question_10_candidats 492 68.441309
95 email 0 100.000000

96 rows × 3 columns

In [ ]:
print('Initial shape', df_2022.shape)

# Filtre des tests
df_2022['submitted_at'] = pd.to_datetime(df_2022['submitted_at'], format='%d/%m/%Y %H:%M:%S')
df_2022 = df_2022.loc[(df_2022['submitted_at'] >= '2022-06-08')]
print('test filter shape', df_2022.shape)

# Drop line avec plus de 70% de valeurs manquantes
df_2022= df_2022[df_2022.isnull().mean(axis=1) < .7]
print('Line NaN filter shape', df_2022.shape)

# filtre des doublons
df_2022.sort_values(by='submitted_at', inplace=True)
df_2022.drop_duplicates('email', keep = 'last', inplace=True)
print('Duplicated filter shape', df_2022.shape)
Initial shape (1559, 96)
test filter shape (911, 96)
Line NaN filter shape (911, 96)
Duplicated filter shape (793, 96)
In [ ]:
df_2022 = df_2022.drop(["email"], axis=1)
In [ ]:
# Suppression valeurs abérrantes
df_2022 = df_2022[-df_2022["secteur"].isin(['JE NE TRAVAILLE PAS'])]
In [ ]:
filling_factor(df_2022)
Out[ ]:
column_name missing_count filling_factor
0 Votre entreprise s'est-elle fixée des *objecti... 435 45.075758
1 Quels sujets abordez-vous avec vos équipes aut... 273 65.530303
2 question_14_impact 270 65.909091
3 A quel *département* est intégrée l'équipe RSE ? 234 70.454545
4 Quelle est *votre plus grande fierté* en matiè... 225 71.590909
... ... ... ...
90 Avez-vous déjà mis en place des actions pour l... 0 100.000000
91 Avez-vous déjà mis en place des actions autour... 0 100.000000
92 Avez-vous déjà mis en place des actions pour l... 0 100.000000
93 Avez-vous déjà mis en place des actions autour... 0 100.000000
94 Avez-vous déjà mené des actions de *sensibilis... 0 100.000000

95 rows × 3 columns

In [ ]:
# Visualise and check NaN
plt.figure(figsize=(45,10))
sns.heatmap(df_2022.isna(), cmap="Blues_r", cbar=False)
plt.show() 
In [ ]:
df_2022.replace(to_replace="Je ne sais pas", 
           value=np.nan, 
           inplace=True)
In [ ]:
#df_2022.to_csv('df_2022.csv', encoding = 'utf-8-sig') 
#files.download('df_2022.csv')

III) Explo des données 2022 - Analyses simples¶

Question 1 : Rôle des répondant.e.s / OK¶

In [ ]:
# Catégorisation des rôles
display(df_2022['role'].unique())

old_role_values = ['qualité, sécurité et RSE',
                   'RQSE',
                   "QSE",
                   "QHSE & Campus responsables",
                   "Animatrice QSE ALTERNANTE Mastère spécialisé QSE",
                   "Responsable QHSE",
                   "QHSSE",
                   "HSSE",
                   "Animatrice QHSE",
                   "Direction HSE RSE",
                   "Qhse rse",
                   "Qhse",
                   "HSE"]


new_role_value = 'QHSE'

df_2022['role_v2'] = df_2022['role'].replace(old_role_values, new_role_value)

df_2022['role_v2'] = df_2022['role_v2'].replace(["consultant", "Consultante"], "Consultant")
array(['RSE / CSR', 'Ressources humaines / Talent Acquisition',
       'Direction Générale / COMEX', 'Dirigeante Antenne', 'Création',
       'Communication / Marketing', 'Fondation', 'QHSE', 'Technicien',
       'Chef de Produit',
       'Manager Green IT en partie en charge de la RSE',
       'Opérateur de test', 'Coach agile en CDI', 'office manager',
       'FINANCE ADMINISTRATIF', 'Ventes', 'Thermicien',
       'Auto-entrepreneuse', 'Analyse financière', 'Consultant',
       "Chargé d'études", 'conformité', nan, 'Office Manager',
       'assistante commerciale', "Stagiaire au bureau d'études",
       'Consultante', 'Investissement', 'qualité, sécurité et RSE',
       'Cheffe de service', 'ACHATS', 'Commerce', 'CSE', 'Manager',
       'Personnel', "Dirigeante créatrice de l'entreprise",
       'Chargé de développement', 'Digital Transformation Manager',
       'Auto-entrepreneur', 'Office and Happiness Manager',
       'Engineering Manager',
       'consultante - fondatrice communauté climat & écologie',
       'Portfolio Management', 'QSE', 'Chargée de missions',
       'Employee Experience', 'Commerciale', "Directeur d'hôtel",
       'présidente', 'Directeur IT',
       "Apprenti Polyvalent et projet d'écolabellisation)", 'Design',
       'Sales', 'Responsable Commercial', 'Innovation project manager',
       'Program manager', 'Head of Impact', 'RQSE', 'consultant',
       'Directrice Adjointe', 'Chef de projet', 'Ingénieur',
       'Pilote RSE et Delivery Manager', 'Responsable qualité',
       'Appui et compétences (RH, SI, environnement)',
       'Consultant Sénior', 'Administration générale',
       'QHSE & Campus responsables',
       'Animatrice QSE ALTERNANTE Mastère spécialisé QSE', 'collection',
       'stagiaire', 'Key Account Manager', 'Commercial',
       'Responsable QHSE', 'QHSSE', 'Transition écologique',
       'Tourisme solidaire et philanthropique',
       'Cheffe de Projet chargée de développement et RSE', 'HSSE',
       "Etude d'impact", 'Achats',
       'Chargée de recherche de fonds et responsable partenariat',
       'projets', 'Produit', 'Directrice de Mission', 'Vente',
       'Office manager _ Resp Compta et Admin', "chargée d'affaires",
       'Commerce / RSE', 'RESPONSABLE COMMERCIALE', 'développement offr',
       'Oenologue', 'Consultant RSE et amélioration Continue',
       'Communication interne & RSE',
       'Collaborateur audit financier et RSE', 'Technicien principal',
       'Qhse rse', 'Auto entrepreneur', 'Qualité', 'Animatrice QHSE',
       'Responsable Qualité',
       'Formatrice des équipes au service client (+petite équipe RSE en parallèle)',
       'Direction HSE RSE', "+Direction de l'organisation", 'iM',
       'Excellence Opérationnelle', 'gestion / finance',
       'Responsable Recherche et Innovation', 'chargée de missions',
       'Business designer', 'juriste', 'Responsable engagement',
       'Assistante', 'HSE', 'Qhse', 'REFERENTE PEDAGOGIQUE',
       'R&D Wellbeing (contribue à la RSE)', 'Directeur innovation',
       'Country Manager', 'Responsable Innovation et communication',
       'Innovation', 'Gestionnaire administrative RH'], dtype=object)
In [ ]:
#Remplacement de certaines valeurs par "autres"

df_2022['role_v2'] = np.where(df_2022['role_v2'].isin(['RSE / CSR','Direction Générale / COMEX', "Communication / Marketing", "Ressources humaines / Talent Acquisition", "QHSE", "Fondation", "Consultant", "CSE"]), df_2022['role_v2'], 'Autres')
df_2022['role_v2'].value_counts()
Out[ ]:
RSE / CSR                                   343
Direction Générale / COMEX                  167
Autres                                      101
Communication / Marketing                    71
Ressources humaines / Talent Acquisition     66
QHSE                                         18
Fondation                                    12
Consultant                                    7
CSE                                           7
Name: role_v2, dtype: int64
In [ ]:
df_2022['role_v2'].value_counts().to_frame()
Out[ ]:
role_v2
RSE / CSR 343
Direction Générale / COMEX 167
Autres 101
Communication / Marketing 71
Ressources humaines / Talent Acquisition 66
QHSE 18
Fondation 12
Consultant 7
CSE 7
In [ ]:
%%capture
!pip install kaleido
!pip install plotly>=4.0.0
!wget https://github.com/plotly/orca/releases/download/v1.2.1/orca-1.2.1-x86_64.AppImage -O /usr/local/bin/orca
!chmod +x /usr/local/bin/orca
!apt-get install xvfb libgtk2.0-0 libgconf-2-4
In [ ]:
# Répartition des répondant·es en fonction de leur rôle dans l'entreprise

import plotly.graph_objects as go
from plotly.subplots import make_subplots

labels = ["RSE / CSR", "Direction Générale / COMEX", "Autres", "Communication / Marketing", "Ressources humaines / Talent Acquisition", "QHSE", "Fondation", "CSE", "Consultant"]

# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=labels, values=df_2022['role_v2'].value_counts(), name="Rôle"), 1, 1)

# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")

fig.update_layout(
    title_text="Répartition des répondant·es en fonction de leur rôle dans l'entreprise")


fig.show()

# Export figures
fig.write_image("question_1_donut.png")
from IPython.display import Image
Image("question_1_donut.png")
files.download("question_1_donut.png")
In [ ]:
# Barplot de la même question

# Librairies
import pandas as pd
import matplotlib.pyplot as plt

# Taille fig
plt.figure(figsize=(25,8))

# Barplot
plt.barh(y=["RSE / CSR", "Direction Générale / COMEX", "Autres", "Communication / Marketing", "Ressources humaines / Talent Acquisition", "QHSE", "Fondation", "CSE", "Consultant"], width=df_2022['role_v2'].value_counts())

# Titre
plt.title("Répartition des répondant·es en fonction de leur rôle dans l'entreprise")

plt.savefig("question_1_2022.svg")
files.download("question_1_2022.svg") 
plt.savefig("question_1_2022.png")
files.download("question_1_2022.png") 

Question 2 : Taille des entreprises répondantes / OK¶

In [ ]:
# Catégorisation en fonction de la taille des entreprises
myCoding = {'Moins de 10' : 'TPE', '11 à 50' : 'PME', '51 à 200' : 'PME', '201 à 1000' : 'ETI', '1001 à 5000' : 'ETI', 'Plus de 5000' : 'Grand groupe'}
df_2022["categ_taille_entreprises"] = df_2022["taille_entreprise"].replace(myCoding)
In [ ]:
# Classification en fonction de la taille des entreprises
taille_ent = df_2022['categ_taille_entreprises'].value_counts().to_frame()
taille_ent = taille_ent.reset_index()
In [ ]:
taille_ent.rename(columns={'index':'Taille entreprise'}, inplace=True)
display(taille_ent['Taille entreprise'].unique())
taille_ent['Taille entreprise'] = pd.Categorical(taille_ent['Taille entreprise'],categories=["TPE",'PME','ETI', 'Grand groupe'])
taille_ent = taille_ent.sort_values('Taille entreprise')
display(taille_ent)
array(['PME', 'ETI', 'TPE', 'Grand groupe'], dtype=object)
Taille entreprise categ_taille_entreprises
2 TPE 121
0 PME 376
1 ETI 240
3 Grand groupe 54
In [ ]:
# Répartition de taille d'entreprises répondantes
# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=taille_ent["Taille entreprise"], values=taille_ent['categ_taille_entreprises'], name="Catégorie", sort=False), 1, 1)

# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")

fig.update_layout(title_text="Répartition de taille d'entreprises répondantes")

fig.show()

# Export figures
fig.write_image("question_2_donut.png")
from IPython.display import Image
Image("question_2_donut.png")
files.download("question_2_donut.png")

Question 3 : Secteurs d'activités des entreprises répondantes / OK¶

In [ ]:
# Secteurs principaux travaillent les répondant·es du Baromètre
df_2022['secteur_v2'] = np.where(df_2022['secteur'].isin(['Conseil / Etudes','Tech / Digital / Informatique', "Commerce / Négoce / Distribution", "Banque / Assurance / Finance / Mutuelle", "BTP / Construction / Immobilier", "Edition / Communication / Multimédia", "Agro-alimentaire", "Tourisme / Hôtellerie / Restauration", "Santé / Action sociale", "Enseignement / Formation", "Transports / Logistiques", "ESS / Développement durable", "Ressources humaines / QVT / RSE", "Energie / Eau / Assainissement", "Mode / Textile", "Culture / Sports / Loisirs", "Industrie pharmaceutique", "Administration publique", "Machines et équipements / Automobile", "Chimie"]), df_2022['secteur'], 'Autres')
display(df_2022['secteur_v2'].value_counts())
Conseil / Etudes                           134
Tech / Digital / Informatique              110
Autres                                      84
Commerce / Négoce / Distribution            61
Banque / Assurance / Finance / Mutuelle     53
BTP / Construction / Immobilier             45
Edition / Communication / Multimédia        41
Agro-alimentaire                            40
Tourisme / Hôtellerie / Restauration        30
Santé / Action sociale                      28
Enseignement / Formation                    22
Transports / Logistiques                    21
ESS / Développement durable                 20
Ressources humaines / QVT / RSE             18
Mode / Textile                              15
Energie / Eau / Assainissement              15
Industrie pharmaceutique                    13
Culture / Sports / Loisirs                  13
Administration publique                     10
Machines et équipements / Automobile        10
Chimie                                       9
Name: secteur_v2, dtype: int64
In [ ]:
df_2022['secteur_v2'].value_counts().to_frame()
Out[ ]:
secteur_v2
Conseil / Etudes 134
Tech / Digital / Informatique 110
Autres 84
Commerce / Négoce / Distribution 61
Banque / Assurance / Finance / Mutuelle 53
BTP / Construction / Immobilier 45
Edition / Communication / Multimédia 41
Agro-alimentaire 40
Tourisme / Hôtellerie / Restauration 30
Santé / Action sociale 28
Enseignement / Formation 22
Transports / Logistiques 21
ESS / Développement durable 20
Ressources humaines / QVT / RSE 18
Mode / Textile 15
Energie / Eau / Assainissement 15
Industrie pharmaceutique 13
Culture / Sports / Loisirs 13
Administration publique 10
Machines et équipements / Automobile 10
Chimie 9
In [ ]:
# Secteurs principaux travaillent les répondant·es du Baromètre 2

labels = ["Conseil / Etudes", "Tech / Digital / Informatique", "Autres", "Commerce / Négoce / Distribution", "Banque / Assurance / Finance / Mutuelle", "BTP / Construction / Immobilier", "Edition / Communication / Multimédia", "Agro-alimentaire", "Tourisme / Hôtellerie / Restauration", "Santé / Action sociale", "Enseignement / Formation", "Transports / Logistiques", "ESS / Développement durable", "Ressources humaines / QVT / RSE", "Energie / Eau / Assainissement", "Mode / Textile", "Industrie pharmaceutique", "Culture / Sports / Loisirs", "Administration publique", "Machines et équipements / Automobile", "Chimie"]
# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=labels, values=df_2022['secteur_v2'].value_counts(), name="A quel *secteur* appartient {{field:535b54cf-1d17-4acb-b449-f4a2e0d70888}} ?"), 1, 1)

# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")

fig.update_layout(
    title_text="Secteurs principaux travaillent les répondant·es du Baromètre")

fig.show()

# Export figures
fig.write_image("question_3_donut.png")
from IPython.display import Image
Image("question_3_donut.png")
files.download("question_3_donut.png")

Question 4 : Taille de l'équipe RSE / OK¶

In [ ]:
# Classification taille équipe
equipe = df_2022['equipe_RSE'].value_counts().to_frame()
equipe = equipe.reset_index()
In [ ]:
equipe.rename(columns={'index':'Taille équipe'}, inplace=True)
display(equipe['Taille équipe'].unique())
equipe["Taille équipe"] = pd.Categorical(equipe["Taille équipe"],categories=["Il n'y a pas d'équipe dédiée",'1-2','3-5', '6-10', '>10'])
equipe = equipe.sort_values('Taille équipe')
display(equipe)
array(['1-2', "Il n'y a pas d'équipe dédiée", '3-5', '6-10', '>10'],
      dtype=object)
Taille équipe equipe_RSE
1 Il n'y a pas d'équipe dédiée 233
0 1-2 363
2 3-5 114
3 6-10 45
4 >10 25
In [ ]:
# Répartition de taille des équipes RSE des entreprises répondantes

# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=["Il n'y a pas d'équipe dédiée",'1-2','3-5', '6-10', '>10'], values=equipe['equipe_RSE'], name="Catégorie", sort=False), 1, 1)

# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")

fig.update_layout(
    title_text="Taille des équipes RSE")

fig.show()

# Export figures
fig.write_image("question_4_donut.png")
from IPython.display import Image
Image("question_4_donut.png")
files.download("question_4_donut.png")

Question 5 : Département de l'équipe RSE / OK¶

In [ ]:
df_2022["dep_RSE"] = df_2022["A quel *département* est intégrée l'équipe RSE ?"]
In [ ]:
df_2022["dep_RSE"] = df_2022["dep_RSE"].fillna(0)
In [ ]:
df_2022["dep_RSE"]
Out[ ]:
102     La fonction RSE est autonome
93           A la Direction Générale
88                        Au pôle RH
78                                 0
84                                 0
                    ...             
1550         A la Direction Générale
1555    La fonction RSE est autonome
1557                               0
480          A la Direction Générale
1558                               0
Name: dep_RSE, Length: 792, dtype: object
In [ ]:
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["QHSE", "QSE", "qualité", "Au QHSE", "HSE", "Qualité (QHSE)", "QSE RSE prévention", "RQHSE", "Qualité" "Département QHSE-RSE", "Direction Qualité - Sécurité","Direction Qualité", "au pôle qualité", "la fonction Qualité et Conformité"], "QSE / HSE / QHSE / Qualité")
In [ ]:
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["Secrétariat geberal", "secretariat general", "Secrétariat Général", "SECRÉTARIAT GÉNÉRAL", "Secrétariat général"], "Secrétariat Général")
In [ ]:
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["RH et Administration Générale"], "Au pôle RH")
In [ ]:
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["Innovation", "direction ingénieurie et performance industrielle", "R&D", "intégrée au département  Technique Innovation et Développement Durable", "Marketing Innovation", "Pôle innovation","Direction innovation et développement durable", "Mission secondaire de la R&I", "RSE et open innovation", "direction ingéniérie et performance industrielle"], "Innovation / R&D")
In [ ]:
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["Opération", 
                                                                                          "operations", 
                                                                                          "A la direction excellence opérationnelle",
                                                                                          "Équipe Opérations (car je suis aussi responsable qualité)"], "Opérations")
In [ ]:
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["Finance", 
                                                                                          "CFO (fonctions supports)", 
                                                                                          "Admin & Finance", 
                                                                                          "Direction financière", 
                                                                                          "Juridique", 
                                                                                          "Pole Admin/finance",
                                                                                          "CFO (fonctions supports)"], "Finance / Admin / CFO / Juridique")
In [ ]:
df_2022["dep_RSE"] = df_2022["dep_RSE"].replace(["Groupe de projets de plusieurs profils", 
                                                                                          "équipe transversale", 
                                                                                          "Plusieurs pôles RSE", 
                                                                                          "Nous sommes une agence spécialisée en RSE. Tous nos collaborateurs sont engagés dans la démarche.", 
                                                                                          "1 Membre RH + 1 Membre de la DG + 1 stagiaire autonome", 
                                                                                          "Transverse", 
                                                                                          "a l'ensemble de l'equipe, coordonnée par un chef de projet", 
                                                                                          "Chaque membre appartient à une filière différente de BGE PICARDIE",
                                                                                          "8 collaborateurs en transverse",
                                                                                          "Com° + Qualité + CSE + Direction",
                                                                                          "Plusieurs: Il y a un département RSE mais aussi des personnes intégrées à l'équipe RH sur les questions de diversité et de santé et sécurité",
                                                                                          "Différents postes",
                                                                                          "plusieurs départements RH, COMM, Green Team, Green champions Etc",
                                                                                          "Pôle innovation RH et numérique",
                                                                                          "c'est une équipe projet en plus de nos fonctions",
                                                                                          "Equipe indépendante de personnes qui souhaitent travailler sur ce sujet",
                                                                                          "Plusieurs pôles RSE",
                                                                                          "Groupe de projets de plusieurs profils"], "Transverses")
In [ ]:
df_2022["dep_RSE"] = df_2022['dep_RSE'] = np.where(df_2022['dep_RSE'].isin(['A la Direction Générale',
                                                       'La fonction RSE est autonome', 
                                                       "Au pôle RH", 
                                                       "Au pôle communication", 
                                                       "QSE / HSE / QHSE / Qualité",
                                                       "Secrétariat Général",
                                                       "Innovation / R&D",
                                                       "Opérations",
                                                       "Finance / Admin / CFO / Juridique",
                                                       "Transverses", 0]), df_2022['dep_RSE'], 'Autres')
In [ ]:
question_5 = df_2022["dep_RSE"].value_counts().to_frame()
question_5.reset_index()
question_5 = question_5.drop(labels=0, axis=0)
question_5
Out[ ]:
dep_RSE
A la Direction Générale 173
La fonction RSE est autonome 143
Au pôle RH 70
Au pôle communication 48
Autres 39
QSE / HSE / QHSE / Qualité 21
Transverses 16
Innovation / R&D 10
Opérations 8
Finance / Admin / CFO / Juridique 8
Secrétariat Général 4
In [ ]:
# Département de l'équipe RSE

# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=question_5.index, values=question_5["dep_RSE"], name="Département"), 1, 1)

# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")

fig.update_layout(
    title_text="Département de l'équipe RSE")

fig.show()

# Export figures
fig.write_image("question_5_donut.png")
from IPython.display import Image
Image("question_5_donut.png")
files.download("question_5_donut.png")
In [ ]:
question_5_perc = question_5.div(question_5["dep_RSE"].sum())*100
question_5_perc
Out[ ]:
dep_RSE
A la Direction Générale 32.037037
La fonction RSE est autonome 26.481481
Au pôle RH 12.962963
Au pôle communication 8.888889
Autres 7.222222
QSE / HSE / QHSE / Qualité 3.888889
Transverses 2.962963
Innovation / R&D 1.851852
Opérations 1.481481
Finance / Admin / CFO / Juridique 1.481481
Secrétariat Général 0.740741
In [ ]:
# plot bar chart
question_5_perc["dep_RSE"].plot.bar()
plt.title("Département de l'équipe RSE")

# Export fichier
#plt.savefig("question_5_2022.svg", bbox_inches='tight')
#files.download("question_5_2022.svg") 
#plt.savefig("question_5_2022.png", bbox_inches='tight')
#files.download("question_5_2022.png") 
Out[ ]:
Text(0.5, 1.0, "Département de l'équipe RSE")

Question 6 : RSE et COMEX / OK¶

In [ ]:
df_2022["La RSE est-elle directement représentée au sein du *COMEX* ?"].value_counts()
Out[ ]:
Oui              421
Non              246
Non pertinent     78
Name: La RSE est-elle directement représentée au sein du *COMEX* ?, dtype: int64
In [ ]:
df_2022["rep_COMEX"] = df_2022["La RSE est-elle directement représentée au sein du *COMEX* ?"]

question_6 = df_2022[["rep_COMEX"]]
question_6 = question_6[question_6.rep_COMEX != "Non pertinent"]
question_6.value_counts()
Out[ ]:
rep_COMEX
Oui          421
Non          246
dtype: int64
In [ ]:
# RSE et COMEX

labels = ['Oui', "Non"]

# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=labels, values=question_6.rep_COMEX.value_counts(), name="Catégorie"), 1, 1)

# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")

fig.update_layout(
    title_text="La RSE est-elle directement représentée au sein du COMEX ?")

fig.show()

# Export figures
fig.write_image("question_6_donut.png")
from IPython.display import Image
Image("question_6_donut.png")
files.download("question_6_donut.png")

Question 7 : Budget annuel des départements RSE / OK¶

In [ ]:
df_2022['Quel est le *budget annuel* mis à disposition de votre département RSE ?'].value_counts()
Out[ ]:
Aucun budget                              184
De 1 à 5 000€                             140
De 5 000 à 20 000€                        109
De 20 000 à 50 000€                        61
Plus de 100 000€                           56
Je ne souhaite pas partager ce chiffre     52
De 50 000 à 100 000€                       28
Name: Quel est le *budget annuel* mis à disposition de votre département RSE ?, dtype: int64
In [ ]:
# Budget annuel
budget = df_2022['Quel est le *budget annuel* mis à disposition de votre département RSE ?'].value_counts().to_frame().reset_index()
budget = budget.drop(labels=5, axis=0)
budget
Out[ ]:
index Quel est le *budget annuel* mis à disposition de votre département RSE ?
0 Aucun budget 184
1 De 1 à 5 000€ 140
2 De 5 000 à 20 000€ 109
3 De 20 000 à 50 000€ 61
4 Plus de 100 000€ 56
6 De 50 000 à 100 000€ 28
In [ ]:
budget.rename(columns={'index':'Budget'}, inplace=True)
display(budget.Budget.unique())
budget.Budget = pd.Categorical(budget.Budget,categories=["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€", "Je ne souhaite pas partager ce chiffre"])
budget = budget.sort_values('Budget')
display(budget)
array(['Aucun budget', 'De 1 à 5 000€', 'De 5 000 à 20 000€',
       'De 20 000 à 50 000€', 'Plus de 100 000€', 'De 50 000 à 100 000€'],
      dtype=object)
Budget Quel est le *budget annuel* mis à disposition de votre département RSE ?
0 Aucun budget 184
1 De 1 à 5 000€ 140
2 De 5 000 à 20 000€ 109
3 De 20 000 à 50 000€ 61
6 De 50 000 à 100 000€ 28
4 Plus de 100 000€ 56
In [ ]:
# Répartition des montants de budget des entreprises répondantes dédiés à la RSE

# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=budget.Budget, values= budget["Quel est le *budget annuel* mis à disposition de votre département RSE ?"], name="Quel est le *budget annuel* mis à disposition de votre département RSE ?", sort=False), 1, 1)

# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")

fig.update_layout(title_text="Répartition des montants de budget des entreprises répondantes dédiés à la RSE")

fig.show()

# Export figures
fig.write_image("question_7_donut.png")
from IPython.display import Image
Image("question_7_donut.png")
files.download("question_7_donut.png")

Question 8 : Implication des parties prenantes internes dans la RSE / OK¶

In [ ]:
df_2022['question_8_finance_admin'].value_counts()
Out[ ]:
Favorable        328
Indifférent      207
Moteur           127
Non pertinent    111
Réfractaire       18
Name: question_8_finance_admin, dtype: int64
In [ ]:
import pandas as pd

# Sélection des colonnes pertinentes pour la question 8
question_8 = df_2022[['question_8_COMEX', 'question_8_salaries', 'question_8_middle_management', 'question_8_achats', 'question_8_RH', 'question_8_com_market', 'question_8_commercial', 'question_8_prod', 'question_8_finance_admin']]
display(question_8.head())

# Pivot de la table
question_8 = question_8.apply(pd.Series.value_counts).fillna(0).astype(int)

# Renommage de la première colonne et pivot
question_8 = question_8.reset_index()
question_8.rename(columns={'index':'Réponse'}, inplace=True)
question_8 = question_8.pivot_table(columns='Réponse')
question_8.drop("Non pertinent", inplace = True, axis = 1)
question_8 = question_8.reindex(['Moteur', "Favorable", "Indifférent", "Réfractaire"], axis=1)
question_8
question_8_COMEX question_8_salaries question_8_middle_management question_8_achats question_8_RH question_8_com_market question_8_commercial question_8_prod question_8_finance_admin
102 Non pertinent Favorable Indifférent Réfractaire Favorable Favorable Favorable Non pertinent Indifférent
93 Favorable Favorable Favorable Non pertinent Non pertinent Moteur Moteur Favorable Non pertinent
88 Favorable Favorable Indifférent Indifférent Moteur Favorable Favorable Indifférent Indifférent
78 Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent
84 Favorable Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent
Out[ ]:
Réponse Moteur Favorable Indifférent Réfractaire
question_8_COMEX 324 292 71 9
question_8_RH 308 291 69 7
question_8_achats 171 278 126 17
question_8_com_market 362 282 66 2
question_8_commercial 132 328 172 17
question_8_finance_admin 127 328 207 18
question_8_middle_management 140 379 148 5
question_8_prod 90 276 185 17
question_8_salaries 218 429 106 2
In [ ]:
question_8_perc = question_8.div(question_8.sum(axis=1), axis=0)*100
display(question_8_perc)

# Création du stacked barplot
question_8_perc.plot(kind='bar', stacked=True)

plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Degrés d'implication des parties prenantes internes")
plt.xlabel("Parties internes")
plt.ylabel("Pourcentage cumulé")

# Export fichier
plt.savefig("question_8_2022.svg", bbox_inches='tight')
files.download("question_8_2022.svg") 
plt.savefig("question_8_2022.png", bbox_inches='tight')
files.download("question_8_2022.png") 

plt.show()
Réponse Moteur Favorable Indifférent Réfractaire
question_8_COMEX 46.551724 41.954023 10.201149 1.293103
question_8_RH 45.629630 43.111111 10.222222 1.037037
question_8_achats 28.885135 46.959459 21.283784 2.871622
question_8_com_market 50.842697 39.606742 9.269663 0.280899
question_8_commercial 20.338983 50.539291 26.502311 2.619414
question_8_finance_admin 18.676471 48.235294 30.441176 2.647059
question_8_middle_management 20.833333 56.398810 22.023810 0.744048
question_8_prod 15.845070 48.591549 32.570423 2.992958
question_8_salaries 28.874172 56.821192 14.039735 0.264901

Question 10 : Implication des parties prenantes externes dans la RSE / OK¶

In [ ]:
df_2022['question_10_etat_co_publiques'].value_counts()
Out[ ]:
Ils ne connaissent pas nos actions    309
Ils connaissent  nos actions          248
Non pertinent                         150
Ils participent à nos actions RSE      84
Name: question_10_etat_co_publiques, dtype: int64
In [ ]:
import pandas as pd

# Sélection des colonnes pertinentes pour la question 10
question_10 = df_2022[['question_10_etat_co_publiques',	'question_10_conso_clients',	'question_10_ss_traitants',	'question_10_candidats',	'question_10_citoyens',	'question_10_actionnaires']]
display(question_10.head())

# Pivot de la table
question_10 = question_10.apply(pd.Series.value_counts).fillna(0).astype(int)

# Renommage de la première colonne et pivot
question_10 = question_10.reset_index()
question_10.rename(columns={'index':'Réponse'}, inplace=True)
question_10 = question_10.pivot_table(columns='Réponse')
question_10.drop("Non pertinent", inplace = True, axis = 1)
question_10 = question_10.reindex(["Ils connaissent  nos actions", "Ils participent à nos actions RSE", "Ils ne connaissent pas nos actions"], axis=1)

question_10
question_10_etat_co_publiques question_10_conso_clients question_10_ss_traitants question_10_candidats question_10_citoyens question_10_actionnaires
102 Ils ne connaissent pas nos actions Ils ne connaissent pas nos actions Ils ne connaissent pas nos actions Ils connaissent nos actions Ils ne connaissent pas nos actions Ils connaissent nos actions
93 Ils ne connaissent pas nos actions Ils connaissent nos actions Ils participent à nos actions RSE Ils connaissent nos actions Ils connaissent nos actions Ils participent à nos actions RSE
88 Ils connaissent nos actions Ils connaissent nos actions Ils connaissent nos actions Ils connaissent nos actions Ils ne connaissent pas nos actions Ils connaissent nos actions
78 Non pertinent Ils participent à nos actions RSE Ils participent à nos actions RSE Non pertinent Non pertinent Non pertinent
84 Ils ne connaissent pas nos actions Ils ne connaissent pas nos actions Ils ne connaissent pas nos actions Ils ne connaissent pas nos actions Ils ne connaissent pas nos actions Non pertinent
Out[ ]:
Réponse Ils connaissent nos actions Ils participent à nos actions RSE Ils ne connaissent pas nos actions
question_10_actionnaires 299 189 89
question_10_candidats 444 63 214
question_10_citoyens 169 35 396
question_10_conso_clients 410 147 195
question_10_etat_co_publiques 248 84 309
question_10_ss_traitants 258 144 291
In [ ]:
question_10_perc = question_10.div(question_10.sum(axis=1), axis=0)*100
display(question_10_perc)

question_10_perc.plot(kind='bar', stacked=True)

plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Degrés d'implication des parties prenantes externes")
plt.xlabel("Parties externes")
plt.ylabel("Pourcentage cumulé")

# Export fichier
plt.savefig("question_10_2022.svg", bbox_inches='tight')
files.download("question_10_2022.svg") 
plt.savefig("question_10_2022.png", bbox_inches='tight')
files.download("question_10_2022.png") 

plt.show()
Réponse Ils connaissent nos actions Ils participent à nos actions RSE Ils ne connaissent pas nos actions
question_10_actionnaires 51.819757 32.755633 15.424610
question_10_candidats 61.581137 8.737864 29.680999
question_10_citoyens 28.166667 5.833333 66.000000
question_10_conso_clients 54.521277 19.547872 25.930851
question_10_etat_co_publiques 38.689548 13.104524 48.205928
question_10_ss_traitants 37.229437 20.779221 41.991342

Question 9 : Propotion de salarié·es impliqué·es dans la démarche RSE de l'entreprise / OK¶

In [ ]:
df_2022["Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *?"].value_counts()
Out[ ]:
Une petite partie - Entre 5 et 25% des salariés    271
Très peu de salariés - Moins de 5%                 164
Presque tous les salariés - Plus de 75%            120
Près de la moitié - Entre 25 et 50%                100
Plus de la moitié - Entre 50 et 75%                 77
Non pertinent chez nous                             35
Name: Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *?, dtype: int64
In [ ]:
# Classification des catégories
demarche = df_2022["Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *?"].value_counts().to_frame()
demarche = demarche.reset_index()
demarche = demarche.drop(labels=5, axis=0)
demarche
Out[ ]:
index Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *?
0 Une petite partie - Entre 5 et 25% des salariés 271
1 Très peu de salariés - Moins de 5% 164
2 Presque tous les salariés - Plus de 75% 120
3 Près de la moitié - Entre 25 et 50% 100
4 Plus de la moitié - Entre 50 et 75% 77
In [ ]:
demarche.rename(columns={'index':'Proportion'}, inplace=True)
display(demarche['Proportion'].unique())
demarche['Proportion'] = pd.Categorical(demarche['Proportion'],categories=["Très peu de salariés - Moins de 5%",
                                                                           'Une petite partie - Entre 5 et 25% des salariés',
                                                                           'Près de la moitié - Entre 25 et 50%',
                                                                           'Plus de la moitié - Entre 50 et 75%',
                                                                           "Presque tous les salariés - Plus de 75%"])
demarche = demarche.sort_values('Proportion')
display(demarche)
array(['Une petite partie - Entre 5 et 25% des salariés',
       'Très peu de salariés - Moins de 5%',
       'Presque tous les salariés - Plus de 75%',
       'Près de la moitié - Entre 25 et 50%',
       'Plus de la moitié - Entre 50 et 75%'], dtype=object)
Proportion Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *?
1 Très peu de salariés - Moins de 5% 164
0 Une petite partie - Entre 5 et 25% des salariés 271
3 Près de la moitié - Entre 25 et 50% 100
4 Plus de la moitié - Entre 50 et 75% 77
2 Presque tous les salariés - Plus de 75% 120
In [ ]:
# Proportion de salariés impliquée dans la démarche RSE

# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=demarche['Proportion'], values=demarche["Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *?"], name="Catégorie", sort=False), 1, 1)

# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")

fig.update_layout(
    title_text="Aujourd'hui, selon vous, quelle proportion de salariés est impliquée dans votre démarche RSE?")

fig.show()

# Export figures
fig.write_image("question_9_donut.png")
from IPython.display import Image
Image("question_9_donut.png")
files.download("question_9_donut.png")

Question 11 : Part d'entreprises dans lesquelles l'activité commerciale principale de votre entreprise répond à un enjeu social ou environnemental / OK¶

In [ ]:
df_2022["Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ?"].value_counts()
Out[ ]:
Oui    434
Non    298
Name: Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ?, dtype: int64
In [ ]:
# Activité principale de l'entreprise répondant à un enjeu social ou environnemental?

labels = ["Oui", "Non"]

# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=labels, values=df_2022["Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ?"].value_counts(), name="Catégorie"), 1, 1)

# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")

fig.update_layout(
    title_text="Est-ce que l'activité commerciale principale de votre entreprise répond à un enjeu social ou environnemental?")

fig.show()

# Export figures
fig.write_image("question_11_donut.png")
from IPython.display import Image
Image("question_11_donut.png")
files.download("question_11_donut.png")

Question 12 : Labels et certifications des entreprises répondantes / OK¶

In [ ]:
import pandas as pd

# Sélection des colonnes pertinentes pour la question 12
question_12 = df_2022[['question_12_entreprise_mission', 'question_12_BCorp',	'question_12_Lucie',	'question_12_1%',	'question_12_esus']]
display(question_12.head())

# Pivot de la table
question_12 = question_12.apply(pd.Series.value_counts).fillna(0).astype(int)

# Renommage de la première colonne et pivot
question_12 = question_12.reset_index()
question_12.rename(columns={'index':'Réponse'}, inplace=True)
question_12 = question_12.pivot_table(columns='Réponse')
question_12 = question_12.reindex(["Nous le sommes déjà", "Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout"], axis=1)

question_12
question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
102 Pas du tout Nous y réfléchissons Nous y réfléchissons Pas du tout Pas du tout
93 Non pertinent chez nous Non pertinent chez nous Nous y réfléchissons Pas du tout Je ne connais pas
88 Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous
78 Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous
84 Nous y réfléchissons Je ne connais pas Je ne connais pas Nous le sommes déjà Je ne connais pas
Out[ ]:
Réponse Nous le sommes déjà Nous sommes engagés dans le processus Nous y réfléchissons Je ne connais pas Pas du tout
question_12_1% 34 21 208 202 231
question_12_BCorp 41 96 216 169 172
question_12_Lucie 22 20 176 239 227
question_12_entreprise_mission 94 65 261 99 182
question_12_esus 15 11 72 379 171
In [ ]:
question_12_perc = question_12.div(question_12.sum(axis=1), axis=0)*100
display(question_12_perc)

question_12_perc.plot(kind='bar', stacked=True)

plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Graphique montrant quels labels / certifications intéressent le plus les entreprises répondantes")
plt.xlabel("Labels et certifications")
plt.ylabel("Pourcentage cumulé")

# Export fichier
plt.savefig("question_12_2022.svg", bbox_inches='tight')
files.download("question_12_2022.svg") 
plt.savefig("question_12_2022.png", bbox_inches='tight')
files.download("question_12_2022.png") 

plt.show()
Réponse Nous le sommes déjà Nous sommes engagés dans le processus Nous y réfléchissons Je ne connais pas Pas du tout
question_12_1% 4.885057 3.017241 29.885057 29.022989 33.189655
question_12_BCorp 5.907781 13.832853 31.123919 24.351585 24.783862
question_12_Lucie 3.216374 2.923977 25.730994 34.941520 33.187135
question_12_entreprise_mission 13.409415 9.272468 37.232525 14.122682 25.962910
question_12_esus 2.314815 1.697531 11.111111 58.487654 26.388889

Question 12bis : Cb de labels par entreprises¶

1 graphique "simple" qui montre la part d'entreprises ayant au moins 1 label / ayant 2 labels ou plus / n'ayant pas de label

In [ ]:
additional_12 = df_2022[['question_12_entreprise_mission', 'question_12_BCorp',	'question_12_Lucie',	'question_12_1%',	'question_12_esus']]
display(additional_12.head())
question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
102 Pas du tout Nous y réfléchissons Nous y réfléchissons Pas du tout Pas du tout
93 Non pertinent chez nous Non pertinent chez nous Nous y réfléchissons Pas du tout Je ne connais pas
88 Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous
78 Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous
84 Nous y réfléchissons Je ne connais pas Je ne connais pas Nous le sommes déjà Je ne connais pas
In [ ]:
additional_12 = additional_12.replace(["Nous le sommes déjà"], 1)

additional_12 = additional_12.replace(["Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout", "Non pertinent chez nous"], 0)
additional_12.head()
Out[ ]:
question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
102 0.0 0.0 0.0 0.0 0.0
93 0.0 0.0 0.0 0.0 0.0
88 0.0 0.0 0.0 0.0 0.0
78 0.0 0.0 0.0 0.0 0.0
84 0.0 0.0 0.0 1.0 0.0
In [ ]:
additional_12 = additional_12.sum(axis = 1).to_frame()
additional_12_next = additional_12.sum(axis = 1).to_frame()

additional_12 = additional_12.value_counts().to_frame()
additional_12
Out[ ]:
0
0
0.0 626
1.0 133
2.0 27
3.0 5
4.0 1
In [ ]:
additional_12.rename(columns={0:'count'}, inplace=True)
additional_12 = additional_12.reset_index()
additional_12.rename(columns={0:'nb_label'}, inplace=True)
additional_12["nb_label"] = additional_12["nb_label"].astype(int)
additional_12
Out[ ]:
nb_label count
0 0 626
1 1 133
2 2 27
3 3 5
4 4 1
In [ ]:
# Nombre de labels par entreprise

# Subplots
fig = make_subplots(rows=1, cols=1, specs=[[{'type':'domain'}]])
fig.add_trace(go.Pie(labels=additional_12.nb_label, values= additional_12['count'], name="Combien de labels par entreprises", sort=False), 1, 1)

# Donut
fig.update_traces(hole=.4, hoverinfo="label+percent+name")

fig.update_layout(title_text="Nombre de labels par entreprises répondantes")

fig.show()

# Export figures
fig.write_image("additional_12.png")
from IPython.display import Image
Image("additional_12.png")
files.download("additional_12.png")

IV) Explo des données 2022 - Analyses croisées¶

Questions 4&2 : Taille de l'équipe RSE en fonction de la taille de l'entreprise / OK¶

In [ ]:
# Tableau croisé 4/2
crossed_4_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.equipe_RSE)
crossed_4_2 = crossed_4_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_4_2
Out[ ]:
equipe_RSE 1-2 3-5 6-10 >10 Il n'y a pas d'équipe dédiée
categ_taille_entreprises
TPE 43 4 0 0 74
PME 187 35 15 6 129
ETI 124 57 18 8 29
Grand groupe 9 18 12 11 1
In [ ]:
# Tableau croisé 4/2 en pourcentage
crossed_4_2_perc = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.equipe_RSE, normalize='index')*100
crossed_4_2_perc = crossed_4_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_4_2_perc
Out[ ]:
equipe_RSE 1-2 3-5 6-10 >10 Il n'y a pas d'équipe dédiée
categ_taille_entreprises
TPE 35.537190 3.305785 0.000000 0.000000 61.157025
PME 50.268817 9.408602 4.032258 1.612903 34.677419
ETI 52.542373 24.152542 7.627119 3.389831 12.288136
Grand groupe 17.647059 35.294118 23.529412 21.568627 1.960784
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_4_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Questions 4&2 : Taille de l'équipe RSE en fonction de la taille de l'entreprise")

# Export fichier
plt.savefig("crossed_4_2.svg", bbox_inches='tight')
files.download("crossed_4_2.svg") 
plt.savefig("crossed_4_2.png", bbox_inches='tight')
files.download("crossed_4_2.png") 

Questions 5&2 : Département auquel la RSE est rattachée en fonction de la taille de l'entreprise / OK¶

In [ ]:
# Tableau croisé 5/2
crossed_5_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.dep_RSE)
crossed_5_2 = crossed_5_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_5_2 = crossed_5_2.drop(labels=0, axis=1)
crossed_5_2
Out[ ]:
dep_RSE A la Direction Générale Au pôle RH Au pôle communication Autres Finance / Admin / CFO / Juridique Innovation / R&D La fonction RSE est autonome Opérations QSE / HSE / QHSE / Qualité Secrétariat Général Transverses
categ_taille_entreprises
TPE 28 1 3 0 0 1 12 0 0 0 1
PME 64 29 20 21 3 2 82 3 8 0 7
ETI 62 34 19 15 4 5 40 5 13 1 6
Grand groupe 19 6 6 3 1 2 9 0 0 3 2
In [ ]:
# Tableau croisé 5/2 en pourcentage
crossed_5_2_perc = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.dep_RSE, normalize='index')*100
crossed_5_2_perc = crossed_5_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_5_2_perc = crossed_5_2_perc.drop(labels=0, axis=1)
crossed_5_2_perc
Out[ ]:
dep_RSE A la Direction Générale Au pôle RH Au pôle communication Autres Finance / Admin / CFO / Juridique Innovation / R&D La fonction RSE est autonome Opérations QSE / HSE / QHSE / Qualité Secrétariat Général Transverses
categ_taille_entreprises
TPE 23.140496 0.826446 2.479339 0.000000 0.000000 0.826446 9.917355 0.000000 0.000000 0.000000 0.826446
PME 17.021277 7.712766 5.319149 5.585106 0.797872 0.531915 21.808511 0.797872 2.127660 0.000000 1.861702
ETI 25.833333 14.166667 7.916667 6.250000 1.666667 2.083333 16.666667 2.083333 5.416667 0.416667 2.500000
Grand groupe 35.185185 11.111111 11.111111 5.555556 1.851852 3.703704 16.666667 0.000000 0.000000 5.555556 3.703704
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_5_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(1.6, 1))
plt.title("Questions 5&2 : Département auquel la RSE est rattachée en fonction de la taille de l'entreprise")

# Export fichier
plt.savefig("crossed_5_2.svg", bbox_inches='tight')
files.download("crossed_5_2.svg") 
plt.savefig("crossed_5_2.png", bbox_inches='tight')
files.download("crossed_5_2.png")

Questions 6&2 : RSE rattachée ou non au COMEX en fonction de la taille de l'entreprise / OK¶

In [ ]:
# Tableau croisé 6/2
crossed_6_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["La RSE est-elle directement représentée au sein du *COMEX* ?"])
crossed_6_2 = crossed_6_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_6_2 = crossed_6_2.drop("Non pertinent", axis=1)
crossed_6_2 = crossed_6_2.reindex(["Oui", "Non"], axis=1)
crossed_6_2
Out[ ]:
La RSE est-elle directement représentée au sein du *COMEX* ? Oui Non
categ_taille_entreprises
TPE 59 20
PME 187 137
ETI 138 76
Grand groupe 37 13
In [ ]:
 
In [ ]:
# Tableau croisé 6/2 en pourcentage
crossed_6_2_perc = crossed_6_2.div(crossed_6_2.sum(axis=1), axis=0)*100
crossed_6_2_perc = crossed_6_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_6_2_perc = crossed_6_2_perc.reindex(["Oui", "Non"], axis=1)
crossed_6_2_perc
Out[ ]:
La RSE est-elle directement représentée au sein du *COMEX* ? Oui Non
categ_taille_entreprises
TPE 74.683544 25.316456
PME 57.716049 42.283951
ETI 64.485981 35.514019
Grand groupe 74.000000 26.000000
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_6_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Questions 6&2 : RSE rattachée ou non au COMEX en fonction de la taille de l'entreprise")

# Export fichier
plt.savefig("crossed_6_2.svg", bbox_inches='tight')
files.download("crossed_6_2.svg") 
plt.savefig("crossed_6_2.png", bbox_inches='tight')
files.download("crossed_6_2.png")

Questions 7&2 : Budget annuel en fonction de la taille de l'entreprise / OK¶

In [ ]:
# Tableau croisé 7/2
crossed_7_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022['Quel est le *budget annuel* mis à disposition de votre département RSE ?'])
crossed_7_2 = crossed_7_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_7_2 = crossed_7_2.drop("Je ne souhaite pas partager ce chiffre", axis=1)
crossed_7_2 = crossed_7_2.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"], axis=1)
crossed_7_2
Out[ ]:
Quel est le *budget annuel* mis à disposition de votre département RSE ? Aucun budget De 1 à 5 000€ De 5 000 à 20 000€ De 20 000 à 50 000€ De 50 000 à 100 000€ Plus de 100 000€
categ_taille_entreprises
TPE 47 45 8 2 0 2
PME 95 78 72 25 5 10
ETI 38 17 28 31 19 28
Grand groupe 4 0 1 3 4 16
In [ ]:
# Tableau croisé 7/2 en pourcentage
crossed_7_2_perc = crossed_7_2.div(crossed_7_2.sum(axis=1), axis=0)*100
crossed_7_2_perc = crossed_7_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_7_2_perc = crossed_7_2_perc.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"], axis=1)
crossed_7_2_perc
Out[ ]:
Quel est le *budget annuel* mis à disposition de votre département RSE ? Aucun budget De 1 à 5 000€ De 5 000 à 20 000€ De 20 000 à 50 000€ De 50 000 à 100 000€ Plus de 100 000€
categ_taille_entreprises
TPE 45.192308 43.269231 7.692308 1.923077 0.000000 1.923077
PME 33.333333 27.368421 25.263158 8.771930 1.754386 3.508772
ETI 23.602484 10.559006 17.391304 19.254658 11.801242 17.391304
Grand groupe 14.285714 0.000000 3.571429 10.714286 14.285714 57.142857
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_7_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(1.7, 1))
plt.title("Questions 7&2 : Budget annuel en fonction de la taille de l'entreprise")

# Export fichier
plt.savefig("crossed_7_2.svg", bbox_inches='tight')
files.download("crossed_7_2.svg") 
plt.savefig("crossed_7_2.png", bbox_inches='tight')
files.download("crossed_7_2.png") 

Questions 7&4 : Budget annuel en fonction de la taille de l'équipe RSE / OK¶

In [ ]:
# Tableau croisé 7/4
crossed_7_4 = pd.crosstab(df_2022.equipe_RSE, df_2022["Quel est le *budget annuel* mis à disposition de votre département RSE ?"])
crossed_7_4 = crossed_7_4.drop("Je ne souhaite pas partager ce chiffre", axis=1)
crossed_7_4 = crossed_7_4.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"], axis=1)
crossed_7_4
Out[ ]:
Quel est le *budget annuel* mis à disposition de votre département RSE ? Aucun budget De 1 à 5 000€ De 5 000 à 20 000€ De 20 000 à 50 000€ De 50 000 à 100 000€ Plus de 100 000€
equipe_RSE
1-2 69 61 65 37 17 14
3-5 13 13 12 14 8 19
6-10 4 7 6 0 0 11
>10 0 0 5 3 0 7
Il n'y a pas d'équipe dédiée 98 58 21 7 3 5
In [ ]:
# Tableau croisé 7/4 en pourcentage
crossed_7_4_perc = crossed_7_4.div(crossed_7_4.sum(axis=1), axis=0)*100
crossed_7_4_perc = crossed_7_4_perc.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"], axis=1)
crossed_7_4_perc
Out[ ]:
Quel est le *budget annuel* mis à disposition de votre département RSE ? Aucun budget De 1 à 5 000€ De 5 000 à 20 000€ De 20 000 à 50 000€ De 50 000 à 100 000€ Plus de 100 000€
equipe_RSE
1-2 26.235741 23.193916 24.714829 14.068441 6.463878 5.323194
3-5 16.455696 16.455696 15.189873 17.721519 10.126582 24.050633
6-10 14.285714 25.000000 21.428571 0.000000 0.000000 39.285714
>10 0.000000 0.000000 33.333333 20.000000 0.000000 46.666667
Il n'y a pas d'équipe dédiée 51.041667 30.208333 10.937500 3.645833 1.562500 2.604167
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_7_4_perc.plot.bar(rot=5)
plt.legend(bbox_to_anchor=(1.7, 1))
plt.title("Questions 7&4 : Budget annuel en fonction de la taille de l'équipe RSE")

# Export fichier
plt.savefig("crossed_7_4.svg", bbox_inches='tight')
files.download("crossed_7_4.svg") 
plt.savefig("crossed_7_4.png", bbox_inches='tight')
files.download("crossed_7_4.png") 

Questions 8&2 : Position des parties prenantes internes vis à vis de la RSE en fonction de la taille de l'entreprise / OK¶

In [ ]:
crossed_8_2 = df_2022[['categ_taille_entreprises','question_8_COMEX', 'question_8_salaries', 'question_8_middle_management', 'question_8_achats', 'question_8_RH', 'question_8_com_market', 'question_8_commercial', 'question_8_prod', 'question_8_finance_admin']]
crossed_8_2.head()
Out[ ]:
categ_taille_entreprises question_8_COMEX question_8_salaries question_8_middle_management question_8_achats question_8_RH question_8_com_market question_8_commercial question_8_prod question_8_finance_admin
102 PME Non pertinent Favorable Indifférent Réfractaire Favorable Favorable Favorable Non pertinent Indifférent
93 PME Favorable Favorable Favorable Non pertinent Non pertinent Moteur Moteur Favorable Non pertinent
88 ETI Favorable Favorable Indifférent Indifférent Moteur Favorable Favorable Indifférent Indifférent
78 TPE Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent
84 TPE Favorable Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent
In [ ]:
# Pour les TPE
crossed_8_2_tpe = crossed_8_2.loc[crossed_8_2['categ_taille_entreprises'] == 'TPE']
crossed_8_2_tpe = crossed_8_2_tpe[['question_8_COMEX', 'question_8_salaries', 'question_8_middle_management', 'question_8_achats', 'question_8_RH', 'question_8_com_market', 'question_8_commercial', 'question_8_prod', 'question_8_finance_admin']]
crossed_8_2_tpe.head()

# Pivot de la table
crossed_8_2_tpe = crossed_8_2_tpe.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_8_2_tpe = crossed_8_2_tpe.reset_index()
crossed_8_2_tpe.rename(columns={'index':'Réponse'}, inplace=True)
crossed_8_2_tpe = crossed_8_2_tpe.pivot_table(columns='Réponse')
crossed_8_2_tpe = crossed_8_2_tpe.drop("Non pertinent", axis=1)
crossed_8_2_tpe = crossed_8_2_tpe.reindex(['Moteur', "Favorable", "Indifférent", "Réfractaire"], axis=1)

# En pourcentage
crossed_8_2_tpe_perc = crossed_8_2_tpe.div(crossed_8_2_tpe.sum(axis=1), axis=0)*100
display(crossed_8_2_tpe_perc)

# plot bar chart
crossed_8_2_tpe_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes internes vis à vis de la RSE dans les TPE")

# Export fichier
plt.savefig("crossed_8_2_tpe_perc.svg", bbox_inches='tight')
files.download("crossed_8_2_tpe_perc.svg") 
plt.savefig("crossed_8_2_tpe_perc.png", bbox_inches='tight')
files.download("crossed_8_2_tpe_perc.png")
Réponse Moteur Favorable Indifférent Réfractaire
question_8_COMEX 79.746835 16.455696 3.797468 0.000000
question_8_RH 58.064516 37.096774 4.838710 0.000000
question_8_achats 48.148148 37.037037 12.962963 1.851852
question_8_com_market 66.666667 26.923077 6.410256 0.000000
question_8_commercial 61.111111 27.777778 8.333333 2.777778
question_8_finance_admin 44.927536 40.579710 13.043478 1.449275
question_8_middle_management 56.000000 32.000000 12.000000 0.000000
question_8_prod 43.103448 41.379310 13.793103 1.724138
question_8_salaries 53.763441 38.709677 7.526882 0.000000
In [ ]:
# Pour les PME
crossed_8_2_pme = crossed_8_2.loc[crossed_8_2['categ_taille_entreprises'] == 'PME']
crossed_8_2_pme = crossed_8_2_pme[['question_8_COMEX', 'question_8_salaries', 'question_8_middle_management', 'question_8_achats', 'question_8_RH', 'question_8_com_market', 'question_8_commercial', 'question_8_prod', 'question_8_finance_admin']]

# Pivot de la table
crossed_8_2_pme = crossed_8_2_pme.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_8_2_pme = crossed_8_2_pme.reset_index()
crossed_8_2_pme.rename(columns={'index':'Réponse'}, inplace=True)
crossed_8_2_pme = crossed_8_2_pme.pivot_table(columns='Réponse')
crossed_8_2_pme = crossed_8_2_pme.drop("Non pertinent", axis=1)
crossed_8_2_pme = crossed_8_2_pme.reindex(['Moteur', "Favorable", "Indifférent", "Réfractaire"], axis=1)
display(crossed_8_2_pme.head())

# En pourcentage
crossed_8_2_pme_perc = crossed_8_2_pme.div(crossed_8_2_pme.sum(axis=1), axis=0)*100
display(crossed_8_2_pme_perc)

# plot bar chart
crossed_8_2_pme_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes internes vis à vis de la RSE dans les PME")

# Export fichier
plt.savefig("crossed_8_2_pme_perc.svg", bbox_inches='tight')
files.download("crossed_8_2_pme_perc.svg") 
plt.savefig("crossed_8_2_pme_perc.png", bbox_inches='tight')
files.download("crossed_8_2_pme_perc.png")
Réponse Moteur Favorable Indifférent Réfractaire
question_8_COMEX 146 146 34 8
question_8_RH 149 136 32 5
question_8_achats 62 136 61 8
question_8_com_market 185 129 32 0
question_8_commercial 54 173 81 7
Réponse Moteur Favorable Indifférent Réfractaire
question_8_COMEX 43.712575 43.712575 10.179641 2.395210
question_8_RH 46.273292 42.236025 9.937888 1.552795
question_8_achats 23.220974 50.936330 22.846442 2.996255
question_8_com_market 53.468208 37.283237 9.248555 0.000000
question_8_commercial 17.142857 54.920635 25.714286 2.222222
question_8_finance_admin 18.787879 47.878788 30.000000 3.333333
question_8_middle_management 22.713864 59.587021 17.404130 0.294985
question_8_prod 13.857678 53.932584 29.588015 2.621723
question_8_salaries 24.193548 59.408602 16.129032 0.268817
In [ ]:
# Pour les ETI
crossed_8_2_eti = crossed_8_2.loc[crossed_8_2['categ_taille_entreprises'] == 'ETI']
crossed_8_2_eti = crossed_8_2_eti[['question_8_COMEX', 'question_8_salaries', 'question_8_middle_management', 'question_8_achats', 'question_8_RH', 'question_8_com_market', 'question_8_commercial', 'question_8_prod', 'question_8_finance_admin']]
crossed_8_2_eti.head()

# Pivot de la table
crossed_8_2_eti = crossed_8_2_eti.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_8_2_eti = crossed_8_2_eti.reset_index()
crossed_8_2_eti.rename(columns={'index':'Réponse'}, inplace=True)
crossed_8_2_eti = crossed_8_2_eti.pivot_table(columns='Réponse')
crossed_8_2_eti = crossed_8_2_eti.drop("Non pertinent", axis=1)
crossed_8_2_eti = crossed_8_2_eti.reindex(['Moteur', "Favorable", "Indifférent", "Réfractaire"], axis=1)
display(crossed_8_2_pme.head())

# En pourcentage
crossed_8_2_eti_perc = crossed_8_2_eti.div(crossed_8_2_eti.sum(axis=1), axis=0)*100
display(crossed_8_2_eti_perc)

# plot bar chart
crossed_8_2_eti_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes internes vis à vis de la RSE dans les ETI")

# Export fichier
plt.savefig("crossed_8_2_eti_perc.svg", bbox_inches='tight')
files.download("crossed_8_2_eti_perc.svg") 
plt.savefig("crossed_8_2_eti_perc.png", bbox_inches='tight')
files.download("crossed_8_2_eti_perc.png")
Réponse Moteur Favorable Indifférent Réfractaire
question_8_COMEX 146 146 34 8
question_8_RH 149 136 32 5
question_8_achats 62 136 61 8
question_8_com_market 185 129 32 0
question_8_commercial 54 173 81 7
Réponse Moteur Favorable Indifférent Réfractaire
question_8_COMEX 40.000000 46.086957 13.478261 0.434783
question_8_RH 41.772152 44.303797 13.080169 0.843882
question_8_achats 29.223744 44.292237 22.831050 3.652968
question_8_com_market 42.735043 47.435897 9.401709 0.427350
question_8_commercial 12.616822 50.934579 33.177570 3.271028
question_8_finance_admin 9.956710 50.649351 37.229437 2.164502
question_8_middle_management 10.775862 58.189655 29.310345 1.724138
question_8_prod 10.447761 43.781095 41.293532 4.477612
question_8_salaries 25.630252 60.084034 13.865546 0.420168
In [ ]:
# Pour les grands groupes
crossed_8_2_gg = crossed_8_2.loc[crossed_8_2['categ_taille_entreprises'] == 'Grand groupe']
crossed_8_2_gg = crossed_8_2_gg[['question_8_COMEX', 'question_8_salaries', 'question_8_middle_management', 'question_8_achats', 'question_8_RH', 'question_8_com_market', 'question_8_commercial', 'question_8_prod', 'question_8_finance_admin']]
crossed_8_2_gg.head()

# Pivot de la table
crossed_8_2_gg = crossed_8_2_gg.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_8_2_gg = crossed_8_2_gg.reset_index()
crossed_8_2_gg.rename(columns={'index':'Réponse'}, inplace=True)
crossed_8_2_gg = crossed_8_2_gg.pivot_table(columns='Réponse')
crossed_8_2_gg = crossed_8_2_gg.drop("Non pertinent", axis=1)
crossed_8_2_gg = crossed_8_2_gg.reindex(['Moteur', "Favorable", "Indifférent", "Réfractaire"], axis=1)
display(crossed_8_2_gg.head())

# En pourcentage
crossed_8_2_gg_perc = crossed_8_2_gg.div(crossed_8_2_gg.sum(axis=1), axis=0)*100
display(crossed_8_2_gg_perc)

# plot bar chart
crossed_8_2_gg_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes internes vis à vis de la RSE dans les grands groupes")

# Export fichier
plt.savefig("crossed_8_2_gg_perc.svg", bbox_inches='tight')
files.download("crossed_8_2_gg_perc.svg") 
plt.savefig("crossed_8_2_gg_perc.png", bbox_inches='tight')
files.download("crossed_8_2_gg_perc.png")
Réponse Moteur Favorable Indifférent Réfractaire
question_8_COMEX 23 27 3 0
question_8_RH 24 27 3 0
question_8_achats 19 25 8 0
question_8_com_market 25 21 7 1
question_8_commercial 7 26 14 1
Réponse Moteur Favorable Indifférent Réfractaire
question_8_COMEX 43.396226 50.943396 5.660377 0.000000
question_8_RH 44.444444 50.000000 5.555556 0.000000
question_8_achats 36.538462 48.076923 15.384615 0.000000
question_8_com_market 46.296296 38.888889 12.962963 1.851852
question_8_commercial 14.583333 54.166667 29.166667 2.083333
question_8_finance_admin 22.000000 50.000000 26.000000 2.000000
question_8_middle_management 19.607843 50.980392 29.411765 0.000000
question_8_prod 16.666667 47.619048 35.714286 0.000000
question_8_salaries 32.692308 55.769231 11.538462 0.000000

Questions 9&2 : Proportion de salarié·e·s impliqué·e·s en fonction de la taille de l'entreprise / OK¶

In [ ]:
crossed_9_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *?"])
crossed_9_2 = crossed_9_2.drop("Non pertinent chez nous", axis=1)
crossed_9_2 = crossed_9_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_9_2 = crossed_9_2.reindex(["Très peu de salariés - Moins de 5%",
                                   'Une petite partie - Entre 5 et 25% des salariés',
                                   'Près de la moitié - Entre 25 et 50%',
                                   'Plus de la moitié - Entre 50 et 75%',
                                   "Presque tous les salariés - Plus de 75%"], axis=1)
crossed_9_2
Out[ ]:
Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *? Très peu de salariés - Moins de 5% Une petite partie - Entre 5 et 25% des salariés Près de la moitié - Entre 25 et 50% Plus de la moitié - Entre 50 et 75% Presque tous les salariés - Plus de 75%
categ_taille_entreprises
TPE 12 7 12 10 52
PME 75 131 53 44 55
ETI 67 107 29 17 11
Grand groupe 10 26 6 6 2
In [ ]:
# Tableau croisé 9/2 en pourcentage
crossed_9_2_perc = crossed_9_2.div(crossed_9_2.sum(axis=1), axis=0)*100
crossed_9_2_perc = crossed_9_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_9_2_perc = crossed_9_2_perc.reindex(["Très peu de salariés - Moins de 5%",
                                   'Une petite partie - Entre 5 et 25% des salariés',
                                   'Près de la moitié - Entre 25 et 50%',
                                   'Plus de la moitié - Entre 50 et 75%',
                                   "Presque tous les salariés - Plus de 75%"], axis=1)
crossed_9_2_perc
Out[ ]:
Aujourd'hui, selon vous, quelle proportion de salariés est *impliquée dans votre démarche RSE *? Très peu de salariés - Moins de 5% Une petite partie - Entre 5 et 25% des salariés Près de la moitié - Entre 25 et 50% Plus de la moitié - Entre 50 et 75% Presque tous les salariés - Plus de 75%
categ_taille_entreprises
TPE 12.903226 7.526882 12.903226 10.752688 55.913978
PME 20.949721 36.592179 14.804469 12.290503 15.363128
ETI 29.004329 46.320346 12.554113 7.359307 4.761905
Grand groupe 20.000000 52.000000 12.000000 12.000000 4.000000
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_9_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(2, 1))
plt.title("Questions 9&2 : Proportion de salarié·e·s impliqué·e·s en fonction de la taille de l'entreprise")

# Export fichier
plt.savefig("crossed_9_2_perc.svg", bbox_inches='tight')
files.download("crossed_9_2_perc.svg") 
plt.savefig("crossed_9_2_perc.png", bbox_inches='tight')
files.download("crossed_9_2_perc.png") 

Questions 10&2 : Position des parties prenantes externes vis à vis de la RSE en fonction de la taille de l'entreprise / OK¶

In [ ]:
crossed_10_2 = df_2022[['categ_taille_entreprises','question_10_etat_co_publiques',	'question_10_conso_clients',	'question_10_ss_traitants',	'question_10_candidats',	'question_10_citoyens',	'question_10_actionnaires']]
crossed_10_2.head()
Out[ ]:
categ_taille_entreprises question_10_etat_co_publiques question_10_conso_clients question_10_ss_traitants question_10_candidats question_10_citoyens question_10_actionnaires
102 PME Ils ne connaissent pas nos actions Ils ne connaissent pas nos actions Ils ne connaissent pas nos actions Ils connaissent nos actions Ils ne connaissent pas nos actions Ils connaissent nos actions
93 PME Ils ne connaissent pas nos actions Ils connaissent nos actions Ils participent à nos actions RSE Ils connaissent nos actions Ils connaissent nos actions Ils participent à nos actions RSE
88 ETI Ils connaissent nos actions Ils connaissent nos actions Ils connaissent nos actions Ils connaissent nos actions Ils ne connaissent pas nos actions Ils connaissent nos actions
78 TPE Non pertinent Ils participent à nos actions RSE Ils participent à nos actions RSE Non pertinent Non pertinent Non pertinent
84 TPE Ils ne connaissent pas nos actions Ils ne connaissent pas nos actions Ils ne connaissent pas nos actions Ils ne connaissent pas nos actions Ils ne connaissent pas nos actions Non pertinent
In [ ]:
# Pour les TPE
crossed_10_2_tpe = crossed_10_2.loc[crossed_10_2['categ_taille_entreprises'] == 'TPE']
crossed_10_2_tpe = crossed_10_2_tpe[['question_10_etat_co_publiques',	'question_10_conso_clients',	'question_10_ss_traitants',	'question_10_candidats',	'question_10_citoyens',	'question_10_actionnaires']]

# Pivot de la table
crossed_10_2_tpe = crossed_10_2_tpe.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_10_2_tpe = crossed_10_2_tpe.reset_index()
crossed_10_2_tpe.rename(columns={'index':'Réponse'}, inplace=True)
crossed_10_2_tpe = crossed_10_2_tpe.pivot_table(columns='Réponse')
crossed_10_2_tpe = crossed_10_2_tpe.drop("Non pertinent", axis=1)
crossed_10_2_tpe = crossed_10_2_tpe.reindex(["Ils connaissent  nos actions", "Ils participent à nos actions RSE", "Ils ne connaissent pas nos actions"], axis=1)
display(crossed_10_2_tpe.head())

# En pourcentage
crossed_10_2_tpe_perc = crossed_10_2_tpe.div(crossed_10_2_tpe.sum(axis=1), axis=0)*100
display(crossed_10_2_tpe_perc)

# plot bar chart
crossed_10_2_tpe_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes externes vis à vis de la RSE dans les TPE")

# Export fichier
plt.savefig("crossed_10_2_tpe_perc.svg", bbox_inches='tight')
files.download("crossed_10_2_tpe_perc.svg") 
plt.savefig("crossed_10_2_tpe_perc.png", bbox_inches='tight')
files.download("crossed_10_2_tpe_perc.png")
Réponse Ils connaissent nos actions Ils participent à nos actions RSE Ils ne connaissent pas nos actions
question_10_actionnaires 20 33 6
question_10_candidats 52 22 16
question_10_citoyens 32 13 37
question_10_conso_clients 56 42 18
question_10_etat_co_publiques 28 22 35
Réponse Ils connaissent nos actions Ils participent à nos actions RSE Ils ne connaissent pas nos actions
question_10_actionnaires 33.898305 55.932203 10.169492
question_10_candidats 57.777778 24.444444 17.777778
question_10_citoyens 39.024390 15.853659 45.121951
question_10_conso_clients 48.275862 36.206897 15.517241
question_10_etat_co_publiques 32.941176 25.882353 41.176471
question_10_ss_traitants 42.553191 34.042553 23.404255
In [ ]:
# Pour les PME
crossed_10_2_pme = crossed_10_2.loc[crossed_10_2['categ_taille_entreprises'] == 'PME']
crossed_10_2_pme = crossed_10_2_pme[['question_10_etat_co_publiques',	'question_10_conso_clients',	'question_10_ss_traitants',	'question_10_candidats',	'question_10_citoyens',	'question_10_actionnaires']]

# Pivot de la table
crossed_10_2_pme = crossed_10_2_pme.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_10_2_pme = crossed_10_2_pme.reset_index()
crossed_10_2_pme.rename(columns={'index':'Réponse'}, inplace=True)
crossed_10_2_pme = crossed_10_2_pme.pivot_table(columns='Réponse')
crossed_10_2_pme = crossed_10_2_pme.drop("Non pertinent", axis=1)
crossed_10_2_pme = crossed_10_2_pme.reindex(["Ils connaissent  nos actions", "Ils participent à nos actions RSE", "Ils ne connaissent pas nos actions"], axis=1)
display(crossed_10_2_pme.head())

# En pourcentage
crossed_10_2_pme_perc = crossed_10_2_pme.div(crossed_10_2_pme.sum(axis=1), axis=0)*100
display(crossed_10_2_pme_perc)

# plot bar chart
crossed_10_2_pme_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes externes vis à vis de la RSE dans les PME")

# Export fichier
plt.savefig("crossed_10_2_pme_perc.svg", bbox_inches='tight')
files.download("crossed_10_2_pme_perc.svg") 
plt.savefig("crossed_10_2_pme_perc.png", bbox_inches='tight')
files.download("crossed_10_2_pme_perc.png")
Réponse Ils connaissent nos actions Ils participent à nos actions RSE Ils ne connaissent pas nos actions
question_10_actionnaires 137 80 59
question_10_candidats 207 27 115
question_10_citoyens 66 7 196
question_10_conso_clients 194 55 106
question_10_etat_co_publiques 99 31 160
Réponse Ils connaissent nos actions Ils participent à nos actions RSE Ils ne connaissent pas nos actions
question_10_actionnaires 49.637681 28.985507 21.376812
question_10_candidats 59.312321 7.736390 32.951289
question_10_citoyens 24.535316 2.602230 72.862454
question_10_conso_clients 54.647887 15.492958 29.859155
question_10_etat_co_publiques 34.137931 10.689655 55.172414
question_10_ss_traitants 35.294118 14.241486 50.464396
In [ ]:
# Pour les ETI
crossed_10_2_eti = crossed_10_2.loc[crossed_10_2['categ_taille_entreprises'] == 'ETI']
crossed_10_2_eti = crossed_10_2_eti[['question_10_etat_co_publiques',	'question_10_conso_clients',	'question_10_ss_traitants',	'question_10_candidats',	'question_10_citoyens',	'question_10_actionnaires']]


# Pivot de la table
crossed_10_2_eti = crossed_10_2_eti.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_10_2_eti = crossed_10_2_eti.reset_index()
crossed_10_2_eti.rename(columns={'index':'Réponse'}, inplace=True)
crossed_10_2_eti = crossed_10_2_eti.pivot_table(columns='Réponse')
crossed_10_2_eti = crossed_10_2_eti.drop("Non pertinent", axis=1)
crossed_10_2_eti = crossed_10_2_eti.reindex(["Ils connaissent  nos actions", "Ils participent à nos actions RSE", "Ils ne connaissent pas nos actions"], axis=1)
display(crossed_10_2_eti.head())

# En pourcentage
crossed_10_2_eti_perc = crossed_10_2_eti.div(crossed_10_2_eti.sum(axis=1), axis=0)*100
display(crossed_10_2_eti_perc)

# plot bar chart
crossed_10_2_eti_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes externes vis à vis de la RSE dans les ETI")

# Export fichier
plt.savefig("crossed_10_2_eti_perc.svg", bbox_inches='tight')
files.download("crossed_10_2_eti_perc.svg") 
plt.savefig("crossed_10_2_eti_perc.png", bbox_inches='tight')
files.download("crossed_10_2_eti_perc.png")
Réponse Ils connaissent nos actions Ils participent à nos actions RSE Ils ne connaissent pas nos actions
question_10_actionnaires 109 61 24
question_10_candidats 146 10 75
question_10_citoyens 52 13 140
question_10_conso_clients 132 32 65
question_10_etat_co_publiques 92 18 105
Réponse Ils connaissent nos actions Ils participent à nos actions RSE Ils ne connaissent pas nos actions
question_10_actionnaires 56.185567 31.443299 12.371134
question_10_candidats 63.203463 4.329004 32.467532
question_10_citoyens 25.365854 6.341463 68.292683
question_10_conso_clients 57.641921 13.973799 28.384279
question_10_etat_co_publiques 42.790698 8.372093 48.837209
question_10_ss_traitants 38.116592 18.834081 43.049327
In [ ]:
# Pour les grands groupes
crossed_10_2_gg = crossed_10_2.loc[crossed_10_2['categ_taille_entreprises'] == 'Grand groupe']
crossed_10_2_gg = crossed_10_2_gg[['question_10_etat_co_publiques',	'question_10_conso_clients',	'question_10_ss_traitants',	'question_10_candidats',	'question_10_citoyens',	'question_10_actionnaires']]


# Pivot de la table
crossed_10_2_gg = crossed_10_2_gg.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_10_2_gg = crossed_10_2_gg.reset_index()
crossed_10_2_gg.rename(columns={'index':'Réponse'}, inplace=True)
crossed_10_2_gg = crossed_10_2_gg.pivot_table(columns='Réponse')
crossed_10_2_gg = crossed_10_2_gg.drop("Non pertinent", axis=1)
crossed_10_2_gg = crossed_10_2_gg.reindex(["Ils connaissent  nos actions", "Ils participent à nos actions RSE", "Ils ne connaissent pas nos actions"], axis=1)
display(crossed_10_2_gg.head())

# En pourcentage
crossed_10_2_gg_perc = crossed_10_2_gg.div(crossed_10_2_gg.sum(axis=1), axis=0)*100
display(crossed_10_2_gg_perc)

# plot bar chart
crossed_10_2_gg_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Position des parties prenantes externes vis à vis de la RSE dans les Grands Groupes")

# Export fichier
plt.savefig("crossed_10_2_gg_perc.svg", bbox_inches='tight')
files.download("crossed_10_2_gg_perc.svg") 
plt.savefig("crossed_10_2_gg_perc.png", bbox_inches='tight')
files.download("crossed_10_2_gg_perc.png")
Réponse Ils connaissent nos actions Ils participent à nos actions RSE Ils ne connaissent pas nos actions
question_10_actionnaires 33 15 0
question_10_candidats 39 4 8
question_10_citoyens 19 2 23
question_10_conso_clients 28 18 6
question_10_etat_co_publiques 29 13 9
Réponse Ils connaissent nos actions Ils participent à nos actions RSE Ils ne connaissent pas nos actions
question_10_actionnaires 68.750000 31.250000 0.000000
question_10_candidats 76.470588 7.843137 15.686275
question_10_citoyens 43.181818 4.545455 52.272727
question_10_conso_clients 53.846154 34.615385 11.538462
question_10_etat_co_publiques 56.862745 25.490196 17.647059
question_10_ss_traitants 35.849057 45.283019 18.867925

Questions 11&2 : Proportion d'entreprises répondantes dont l'activité commerciale principale comprend un enjeu social ou environnementale en fonction de leur taille / OK¶

In [ ]:
# Tableau croisé 11/2
crossed_11_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ?"])
crossed_11_2 = crossed_11_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_11_2 = crossed_11_2.reindex(["Oui", "Non"], axis=1)
crossed_11_2
Out[ ]:
Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ? Oui Non
categ_taille_entreprises
TPE 87 24
PME 182 160
ETI 131 96
Grand groupe 34 18
In [ ]:
# Tableau croisé 11/2 en pourcentage
crossed_11_2_perc = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ?"], normalize='index')*100
crossed_11_2_perc = crossed_11_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_11_2_perc = crossed_11_2_perc.reindex(["Oui", "Non"], axis=1)
crossed_11_2_perc
Out[ ]:
Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ? Oui Non
categ_taille_entreprises
TPE 78.378378 21.621622
PME 53.216374 46.783626
ETI 57.709251 42.290749
Grand groupe 65.384615 34.615385
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_11_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(1.7, 1))
plt.title("Proportion d'entreprises répondantes dont l'activité commerciale principale comprend un enjeu social ou environnementale en fonction de leur taille")

# Export fichier
plt.savefig("crossed_11_2_perc.svg", bbox_inches='tight')
files.download("crossed_11_2_perc.svg") 
plt.savefig("crossed_11_2_perc.png", bbox_inches='tight')
files.download("crossed_11_2_perc.png") 

Questions 11&7 : Proportion d'entreprises répondantes dont l'activité commerciale principale comprend un enjeu social ou environnementale en fonction de leur budget RSE / OK¶

In [ ]:
# Tableau croisé 11/7
crossed_11_7 = pd.crosstab(df_2022['Quel est le *budget annuel* mis à disposition de votre département RSE ?'], df_2022["Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ?"])
crossed_11_7 = crossed_11_7.drop("Je ne souhaite pas partager ce chiffre", axis=0)
crossed_11_7 = crossed_11_7.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"], axis=0)
crossed_11_7 = crossed_11_7.reindex(["Oui", "Non"], axis=1)
crossed_11_7
Out[ ]:
Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ? Oui Non
Quel est le *budget annuel* mis à disposition de votre département RSE ?
Aucun budget 107 65
De 1 à 5 000€ 74 56
De 5 000 à 20 000€ 58 46
De 20 000 à 50 000€ 37 24
De 50 000 à 100 000€ 18 8
Plus de 100 000€ 33 21
In [ ]:
# Tableau croisé 11/7 en pourcentage
crossed_11_7_perc = crossed_11_7.div(crossed_11_7.sum(axis=1), axis=0)*100
crossed_11_7_perc = crossed_11_7_perc.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"], axis=0)
crossed_11_7_perc = crossed_11_7_perc.reindex(["Oui", "Non"], axis=1)
crossed_11_7_perc
Out[ ]:
Est-ce que l'activité commerciale principale de votre entreprise répond à un *enjeu social ou environnemental* ? Oui Non
Quel est le *budget annuel* mis à disposition de votre département RSE ?
Aucun budget 62.209302 37.790698
De 1 à 5 000€ 56.923077 43.076923
De 5 000 à 20 000€ 55.769231 44.230769
De 20 000 à 50 000€ 60.655738 39.344262
De 50 000 à 100 000€ 69.230769 30.769231
Plus de 100 000€ 61.111111 38.888889
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_11_7_perc.plot.bar(rot=90)
plt.legend(bbox_to_anchor=(1.7, 1))
plt.title("Proportion d'entreprises répondantes dont l'activité commerciale principale comprend un enjeu social ou environnementale en fonction de leur budget RSE")

# Export fichier
plt.savefig("crossed_11_7_perc.svg", bbox_inches='tight')
files.download("crossed_11_7_perc.svg") 
plt.savefig("crossed_11_7_perc.png", bbox_inches='tight')
files.download("crossed_11_7_perc.png")

Questions 12&2 : Labels RSE des entreprises répondantes en fontion de leur taille / OK¶

In [ ]:
# Sélection des données entreprises engagées
crossed_12_2 = df_2022[['categ_taille_entreprises', 'question_12_entreprise_mission',	'question_12_BCorp',	'question_12_Lucie',	'question_12_1%',	'question_12_esus']]
crossed_12_2 = crossed_12_2.replace(["Nous le sommes déjà"], 1)
crossed_12_2 = crossed_12_2.replace(["Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout", "Non pertinent chez nous"], 0)

# Groupby par entreprises engagées
crossed_12_2 = crossed_12_2.groupby('categ_taille_entreprises').sum()
crossed_12_2 = crossed_12_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])

# Pourcentage
crossed_12_2_perc = crossed_12_2.div(crossed_12_2.sum(axis=1), axis=0)*100

display(crossed_12_2.head())
display(crossed_12_2_perc.head())
question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
categ_taille_entreprises
TPE 20.0 7.0 1.0 11.0 2.0
PME 39.0 26.0 13.0 12.0 7.0
ETI 29.0 8.0 7.0 8.0 4.0
Grand groupe 6.0 0.0 1.0 3.0 2.0
question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
categ_taille_entreprises
TPE 48.780488 17.073171 2.439024 26.829268 4.878049
PME 40.206186 26.804124 13.402062 12.371134 7.216495
ETI 51.785714 14.285714 12.500000 14.285714 7.142857
Grand groupe 50.000000 0.000000 8.333333 25.000000 16.666667
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_12_2_perc.plot.bar(rot=0)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Questions 12&2 : Labels RSE en fonction de la taille des entreprises engagées")

# Export fichier
plt.savefig("crossed_12_2_perc.svg", bbox_inches='tight')
files.download("crossed_12_2_perc.svg") 
plt.savefig("crossed_12_2_perc.png", bbox_inches='tight')
files.download("crossed_12_2_perc.png") 

Questions 12&2bis : Nb de labels par entreprises en fct de la taille de l'entreprise¶

Crossed 12bis part d'entreprises ayant au moins 1 label / ayant 2 labels / n'ayant pas de label avec : La taille de l'entreprise

In [ ]:
add_crossed_12 = df_2022[["categ_taille_entreprises", 'question_12_entreprise_mission', 'question_12_BCorp',	'question_12_Lucie',	'question_12_1%',	'question_12_esus']]
display(add_crossed_12.head())
categ_taille_entreprises question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
102 PME Pas du tout Nous y réfléchissons Nous y réfléchissons Pas du tout Pas du tout
93 PME Non pertinent chez nous Non pertinent chez nous Nous y réfléchissons Pas du tout Je ne connais pas
88 ETI Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous
78 TPE Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous
84 TPE Nous y réfléchissons Je ne connais pas Je ne connais pas Nous le sommes déjà Je ne connais pas
In [ ]:
add_crossed_12 = add_crossed_12.replace(["Nous le sommes déjà"], 1)
add_crossed_12 = add_crossed_12.replace(["Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout", "Non pertinent chez nous"], 0)
add_crossed_12.head()
Out[ ]:
categ_taille_entreprises question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
102 PME 0.0 0.0 0.0 0.0 0.0
93 PME 0.0 0.0 0.0 0.0 0.0
88 ETI 0.0 0.0 0.0 0.0 0.0
78 TPE 0.0 0.0 0.0 0.0 0.0
84 TPE 0.0 0.0 0.0 1.0 0.0
In [ ]:
add_crossed_12 = add_crossed_12.reset_index()
add_crossed_12.head()
Out[ ]:
index categ_taille_entreprises question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
0 102 PME 0.0 0.0 0.0 0.0 0.0
1 93 PME 0.0 0.0 0.0 0.0 0.0
2 88 ETI 0.0 0.0 0.0 0.0 0.0
3 78 TPE 0.0 0.0 0.0 0.0 0.0
4 84 TPE 0.0 0.0 0.0 1.0 0.0
In [ ]:
col_list= ['question_12_entreprise_mission',	'question_12_BCorp',	'question_12_Lucie',	'question_12_1%','question_12_esus']
add_crossed_12['Sum'] = add_crossed_12[col_list].sum(axis=1)
add_crossed_12 = add_crossed_12[['categ_taille_entreprises', 'Sum']]
add_crossed_12
Out[ ]:
categ_taille_entreprises Sum
0 PME 0.0
1 PME 0.0
2 ETI 0.0
3 TPE 0.0
4 TPE 1.0
... ... ...
787 ETI 0.0
788 PME 0.0
789 PME 0.0
790 PME 0.0
791 PME 1.0

792 rows × 2 columns

In [ ]:
add_crossed_12["Sum"] = add_crossed_12["Sum"].astype(int)
add_crossed_12["Sum"] = add_crossed_12["Sum"].astype(str)
add_crossed_12.dtypes
Out[ ]:
categ_taille_entreprises    object
Sum                         object
dtype: object
In [ ]:
add_crossed_12_vf = pd.crosstab(add_crossed_12['categ_taille_entreprises'], add_crossed_12['Sum'])
add_crossed_12_vf = add_crossed_12_vf.reindex(["TPE", "PME", "ETI", "Grand groupe"])
add_crossed_12_vf
Out[ ]:
Sum 0 1 2 3 4
categ_taille_entreprises
TPE 89 24 7 1 0
PME 298 64 10 3 1
ETI 193 38 9 0 0
Grand groupe 45 7 1 1 0
In [ ]:
add_crossed_12_2_vf_perc = add_crossed_12_vf.div(add_crossed_12_vf.sum(axis=1), axis=0)*100
add_crossed_12_2_vf_perc
Out[ ]:
Sum 0 1 2 3 4
categ_taille_entreprises
TPE 73.553719 19.834711 5.785124 0.826446 0.000000
PME 79.255319 17.021277 2.659574 0.797872 0.265957
ETI 80.416667 15.833333 3.750000 0.000000 0.000000
Grand groupe 83.333333 12.962963 1.851852 1.851852 0.000000
In [ ]:
sum_column = add_crossed_12_2_vf_perc["2"] + add_crossed_12_2_vf_perc["3"] + add_crossed_12_2_vf_perc["4"]
add_crossed_12_2_vf_perc["2+"] = sum_column
add_crossed_12_2_vf_perc = add_crossed_12_2_vf_perc[["0", "1", "2+"]]
add_crossed_12_2_vf_perc
Out[ ]:
Sum 0 1 2+
categ_taille_entreprises
TPE 73.553719 19.834711 6.611570
PME 79.255319 17.021277 3.723404
ETI 80.416667 15.833333 3.750000
Grand groupe 83.333333 12.962963 3.703704
In [ ]:
# plot bar chart
add_crossed_12_2_vf_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Nb de labels en fonction de la taille de l'entreprise")

# Export fichier
plt.savefig("add_crossed_12_2_vf_perc.svg", bbox_inches='tight')
files.download("add_crossed_12_2_vf_perc.svg") 
plt.savefig("add_crossed_12_2_vf_perc.png", bbox_inches='tight')
files.download("add_crossed_12_2_vf_perc.png")
In [ ]:
 

Questions 12&7bis : Nb de labels par entreprises en fct du budget¶

In [ ]:
add_crossed_12bis = df_2022[["Quel est le *budget annuel* mis à disposition de votre département RSE ?", 'question_12_entreprise_mission', 'question_12_BCorp',	'question_12_Lucie',	'question_12_1%',	'question_12_esus']]
display(add_crossed_12bis.head())
Quel est le *budget annuel* mis à disposition de votre département RSE ? question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
102 Aucun budget Pas du tout Nous y réfléchissons Nous y réfléchissons Pas du tout Pas du tout
93 De 1 à 5 000€ Non pertinent chez nous Non pertinent chez nous Nous y réfléchissons Pas du tout Je ne connais pas
88 NaN Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous
78 Aucun budget Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous Non pertinent chez nous
84 Aucun budget Nous y réfléchissons Je ne connais pas Je ne connais pas Nous le sommes déjà Je ne connais pas
In [ ]:
add_crossed_12bis = add_crossed_12bis.replace(["Nous le sommes déjà"], 1)
add_crossed_12bis = add_crossed_12bis.replace(["Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout", "Non pertinent chez nous"], 0)
add_crossed_12bis.head()
Out[ ]:
Quel est le *budget annuel* mis à disposition de votre département RSE ? question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
102 Aucun budget 0.0 0.0 0.0 0.0 0.0
93 De 1 à 5 000€ 0.0 0.0 0.0 0.0 0.0
88 NaN 0.0 0.0 0.0 0.0 0.0
78 Aucun budget 0.0 0.0 0.0 0.0 0.0
84 Aucun budget 0.0 0.0 0.0 1.0 0.0
In [ ]:
add_crossed_12bis = add_crossed_12bis.reset_index()
add_crossed_12bis.head()
Out[ ]:
index Quel est le *budget annuel* mis à disposition de votre département RSE ? question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
0 102 Aucun budget 0.0 0.0 0.0 0.0 0.0
1 93 De 1 à 5 000€ 0.0 0.0 0.0 0.0 0.0
2 88 NaN 0.0 0.0 0.0 0.0 0.0
3 78 Aucun budget 0.0 0.0 0.0 0.0 0.0
4 84 Aucun budget 0.0 0.0 0.0 1.0 0.0
In [ ]:
col_list2= ['question_12_entreprise_mission',	'question_12_BCorp',	'question_12_Lucie',	'question_12_1%','question_12_esus']
add_crossed_12bis['Sum'] = add_crossed_12bis[col_list2].sum(axis=1)
add_crossed_12bis = add_crossed_12bis[['Quel est le *budget annuel* mis à disposition de votre département RSE ?', 'Sum']]
add_crossed_12bis
Out[ ]:
Quel est le *budget annuel* mis à disposition de votre département RSE ? Sum
0 Aucun budget 0.0
1 De 1 à 5 000€ 0.0
2 NaN 0.0
3 Aucun budget 0.0
4 Aucun budget 1.0
... ... ...
787 NaN 0.0
788 Aucun budget 0.0
789 Aucun budget 0.0
790 Aucun budget 0.0
791 NaN 1.0

792 rows × 2 columns

In [ ]:
add_crossed_12bis["Sum"] = add_crossed_12bis["Sum"].astype(int)
add_crossed_12bis["Sum"] = add_crossed_12bis["Sum"].astype(str)
add_crossed_12bis.dtypes
/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:1: SettingWithCopyWarning:


A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:2: SettingWithCopyWarning:


A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

Out[ ]:
Quel est le *budget annuel* mis à disposition de votre département RSE ?    object
Sum                                                                         object
dtype: object
In [ ]:
add_crossed_12bis_vf = pd.crosstab(add_crossed_12bis['Quel est le *budget annuel* mis à disposition de votre département RSE ?'], add_crossed_12bis['Sum'])
add_crossed_12bis_vf = add_crossed_12bis_vf.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"])
add_crossed_12bis_vf
Out[ ]:
Sum 0 1 2 3 4
Quel est le *budget annuel* mis à disposition de votre département RSE ?
Aucun budget 158 25 1 0 0
De 1 à 5 000€ 103 29 6 1 1
De 5 000 à 20 000€ 75 26 6 2 0
De 20 000 à 50 000€ 44 14 3 0 0
De 50 000 à 100 000€ 24 3 1 0 0
Plus de 100 000€ 43 10 2 1 0
In [ ]:
add_crossed_12bis_vf_perc = add_crossed_12bis_vf.div(add_crossed_12bis_vf.sum(axis=1), axis=0)*100
add_crossed_12bis_vf_perc
Out[ ]:
Sum 0 1 2 3 4
Quel est le *budget annuel* mis à disposition de votre département RSE ?
Aucun budget 85.869565 13.586957 0.543478 0.000000 0.000000
De 1 à 5 000€ 73.571429 20.714286 4.285714 0.714286 0.714286
De 5 000 à 20 000€ 68.807339 23.853211 5.504587 1.834862 0.000000
De 20 000 à 50 000€ 72.131148 22.950820 4.918033 0.000000 0.000000
De 50 000 à 100 000€ 85.714286 10.714286 3.571429 0.000000 0.000000
Plus de 100 000€ 76.785714 17.857143 3.571429 1.785714 0.000000
In [ ]:
sum_column = add_crossed_12bis_vf_perc["2"] + add_crossed_12bis_vf_perc["3"] + add_crossed_12bis_vf_perc["4"]
add_crossed_12bis_vf_perc["2+"] = sum_column
add_crossed_12_budget_vf_perc = add_crossed_12bis_vf_perc[["0", "1", "2+"]]
add_crossed_12_budget_vf_perc
Out[ ]:
Sum 0 1 2+
Quel est le *budget annuel* mis à disposition de votre département RSE ?
Aucun budget 85.869565 13.586957 0.543478
De 1 à 5 000€ 73.571429 20.714286 5.714286
De 5 000 à 20 000€ 68.807339 23.853211 7.339450
De 20 000 à 50 000€ 72.131148 22.950820 4.918033
De 50 000 à 100 000€ 85.714286 10.714286 3.571429
Plus de 100 000€ 76.785714 17.857143 5.357143
In [ ]:
# plot bar chart
add_crossed_12_budget_vf_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Nb de labels en fonction de la taille de l'entreprise")

# Export fichier
plt.savefig("add_crossed_12_budget_vf_perc.svg", bbox_inches='tight')
files.download("add_crossed_12_budget_vf_perc.svg") 
plt.savefig("add_crossed_12_budget_vf_perc.png", bbox_inches='tight')
files.download("add_crossed_12_budget_vf_perc.png")
In [ ]:
 

Questions 12&7 : Labels RSE des entreprises répondantes en fontion de leur budget RSE / OK¶

In [ ]:
# Sélection des données entreprises engagées
crossed_12_7 = df_2022[["Quel est le *budget annuel* mis à disposition de votre département RSE ?", 'question_12_entreprise_mission',	'question_12_BCorp',	'question_12_Lucie',	'question_12_1%',	'question_12_esus']]
crossed_12_7 = crossed_12_7.replace(["Nous le sommes déjà"], 1)
crossed_12_7 = crossed_12_7.replace(["Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout", "Non pertinent chez nous"], 0)

# Groupby par entreprises engagées
crossed_12_7 = crossed_12_7.groupby("Quel est le *budget annuel* mis à disposition de votre département RSE ?").sum()
crossed_12_7 = crossed_12_7.drop("Je ne souhaite pas partager ce chiffre", axis=0)
crossed_12_7 = crossed_12_7.reindex(["Aucun budget",'De 1 à 5 000€','De 5 000 à 20 000€', 'De 20 000 à 50 000€', 'De 50 000 à 100 000€', "Plus de 100 000€"])

# Pourcentage
crossed_12_7_perc = crossed_12_7.div(crossed_12_7.sum(axis=1), axis=0)*100

display(crossed_12_7)
display(crossed_12_7_perc.head())
question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
Quel est le *budget annuel* mis à disposition de votre département RSE ?
Aucun budget 9.0 5.0 4.0 5.0 4.0
De 1 à 5 000€ 24.0 8.0 3.0 10.0 3.0
De 5 000 à 20 000€ 17.0 10.0 5.0 8.0 4.0
De 20 000 à 50 000€ 8.0 7.0 3.0 2.0 0.0
De 50 000 à 100 000€ 2.0 1.0 1.0 0.0 1.0
Plus de 100 000€ 10.0 3.0 1.0 2.0 1.0
question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
Quel est le *budget annuel* mis à disposition de votre département RSE ?
Aucun budget 33.333333 18.518519 14.814815 18.518519 14.814815
De 1 à 5 000€ 50.000000 16.666667 6.250000 20.833333 6.250000
De 5 000 à 20 000€ 38.636364 22.727273 11.363636 18.181818 9.090909
De 20 000 à 50 000€ 40.000000 35.000000 15.000000 10.000000 0.000000
De 50 000 à 100 000€ 40.000000 20.000000 20.000000 0.000000 20.000000
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_12_7_perc.plot.bar(rot=90)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Questions 12&7 : Labels RSE en fonction du budget des entreprises engagées")

# Export fichier
plt.savefig("crossed_12_7_perc.svg", bbox_inches='tight')
files.download("crossed_12_7_perc.svg") 
plt.savefig("crossed_12_7_perc.png", bbox_inches='tight')
files.download("crossed_12_7_perc.png") 

Questions 12&4 : Labels RSE des entreprises répondantes en fontion de la taille de leur équipe RSE¶

In [ ]:
# Sélection des données entreprises engagées
crossed_12_4 = df_2022[["equipe_RSE", 'question_12_entreprise_mission',	'question_12_BCorp',	'question_12_Lucie',	'question_12_1%',	'question_12_esus']]
crossed_12_4 = crossed_12_4.replace(["Nous le sommes déjà"], 1)
crossed_12_4 = crossed_12_4.replace(["Nous sommes engagés dans le processus", "Nous y réfléchissons", "Je ne connais pas", "Pas du tout", "Non pertinent chez nous"], 0)

# Groupby par entreprises engagées
crossed_12_4 = crossed_12_4.groupby("equipe_RSE").sum()
crossed_12_4 = crossed_12_4.reindex(["1-2",	"3-5",	"6-10",	">10",	"Il n'y a pas d'équipe dédiée"])

# Pourcentage
crossed_12_4_perc = crossed_12_4.div(crossed_12_4.sum(axis=1), axis=0)*100

display(crossed_12_4)
display(crossed_12_4_perc.head())
question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
equipe_RSE
1-2 40.0 22.0 15.0 13.0 7.0
3-5 15.0 6.0 3.0 3.0 3.0
6-10 2.0 2.0 0.0 2.0 0.0
>10 5.0 1.0 1.0 3.0 1.0
Il n'y a pas d'équipe dédiée 30.0 10.0 3.0 13.0 4.0
question_12_entreprise_mission question_12_BCorp question_12_Lucie question_12_1% question_12_esus
equipe_RSE
1-2 41.237113 22.680412 15.463918 13.402062 7.216495
3-5 50.000000 20.000000 10.000000 10.000000 10.000000
6-10 33.333333 33.333333 0.000000 33.333333 0.000000
>10 45.454545 9.090909 9.090909 27.272727 9.090909
Il n'y a pas d'équipe dédiée 50.000000 16.666667 5.000000 21.666667 6.666667
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_12_4_perc.plot.bar(rot=90)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Questions 12&4 : Labels RSE en fonction de la taille des équipes RSE des entreprises engagées")

# Export fichier
plt.savefig("crossed_12_4_perc.svg", bbox_inches='tight')
files.download("crossed_12_4_perc.svg") 
plt.savefig("crossed_12_4_perc.png", bbox_inches='tight')
files.download("crossed_12_4_perc.png") 

Questions 13&2 : Motivations des politiques RSE en fonction de la taille de l'entreprise / OK¶

In [ ]:
crossed_13_2 = df_2022[['categ_taille_entreprises','question_13_marque_employ', 'question_13_image', 'question_13_urgence','question_13_invest', 'question_13_volonte', 'question_13_legales']]
crossed_13_2.head()
Out[ ]:
categ_taille_entreprises question_13_marque_employ question_13_image question_13_urgence question_13_invest question_13_volonte question_13_legales
102 PME Peu Important Important Peu Important Peu Important Peu Important Important
93 PME Peu Important Très important Important Important Très important Important
88 ETI Important Très important Important Important Très important Important
78 TPE Très important Très important Très important Non pertinent Très important Très important
84 TPE Important Important Important Non pertinent Non pertinent Non pertinent
In [ ]:
# Pour les TPE
crossed_13_2_tpe = crossed_13_2.loc[crossed_13_2['categ_taille_entreprises'] == 'TPE']
crossed_13_2_tpe = crossed_13_2_tpe[['question_13_marque_employ', 'question_13_image', 'question_13_urgence','question_13_invest', 'question_13_volonte', 'question_13_legales']]

# Pivot de la table
crossed_13_2_tpe = crossed_13_2_tpe.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_13_2_tpe = crossed_13_2_tpe.reset_index()
crossed_13_2_tpe.rename(columns={'index':'Degré motivation'}, inplace=True)
crossed_13_2_tpe = crossed_13_2_tpe.pivot_table(columns='Degré motivation')
crossed_13_2_tpe = crossed_13_2_tpe.drop("Non pertinent", axis=1)
crossed_13_2_tpe = crossed_13_2_tpe.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)
display(crossed_13_2_tpe)

# Important Y/N
crossed_13_2_tpe['Oui'] = crossed_13_2_tpe['Important'] + crossed_13_2_tpe['Très important']
crossed_13_2_tpe['Non'] = crossed_13_2_tpe['Pas important'] + crossed_13_2_tpe['Peu Important']
crossed_13_2_tpe = crossed_13_2_tpe[['Oui', 'Non']]
display(crossed_13_2_tpe)

# En pourcentage
crossed_13_2_tpe_perc = crossed_13_2_tpe.div(crossed_13_2_tpe.sum(axis=1), axis=0)*100
crossed_13_2_tpe_perc = crossed_13_2_tpe_perc.sort_values(by="Oui")
display(crossed_13_2_tpe_perc)

# plot bar chart
crossed_13_2_tpe_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Motivation des politiques RSE dans les TPE")

# Export fichier
plt.savefig("crossed_13_2_tpe_perc.svg", bbox_inches='tight')
files.download("crossed_13_2_tpe_perc.svg") 
plt.savefig("crossed_13_2_tpe_perc.png", bbox_inches='tight')
files.download("crossed_13_2_tpe_perc.png")
Degré motivation Pas important Peu Important Important Très important
question_13_image 1 6 52 58
question_13_invest 5 16 30 18
question_13_legales 10 29 37 23
question_13_marque_employ 2 11 49 47
question_13_urgence 0 4 36 77
question_13_volonte 1 4 22 87
Degré motivation Oui Non
question_13_image 110 7
question_13_invest 48 21
question_13_legales 60 39
question_13_marque_employ 96 13
question_13_urgence 113 4
question_13_volonte 109 5
Degré motivation Oui Non
question_13_legales 60.606061 39.393939
question_13_invest 69.565217 30.434783
question_13_marque_employ 88.073394 11.926606
question_13_image 94.017094 5.982906
question_13_volonte 95.614035 4.385965
question_13_urgence 96.581197 3.418803
In [ ]:
# Pour les PME
crossed_13_2_pme = crossed_13_2.loc[crossed_13_2['categ_taille_entreprises'] == 'PME']
crossed_13_2_pme = crossed_13_2_pme[['question_13_marque_employ', 'question_13_image', 'question_13_urgence','question_13_invest', 'question_13_volonte', 'question_13_legales']]

# Pivot de la table
crossed_13_2_pme = crossed_13_2_pme.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_13_2_pme = crossed_13_2_pme.reset_index()
crossed_13_2_pme.rename(columns={'index':'Degré motivation'}, inplace=True)
crossed_13_2_pme = crossed_13_2_pme.pivot_table(columns='Degré motivation')
crossed_13_2_pme = crossed_13_2_pme.drop("Non pertinent", axis=1)
crossed_13_2_pme = crossed_13_2_pme.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)
display(crossed_13_2_pme)

# Important Y/N
crossed_13_2_pme['Oui'] = crossed_13_2_pme['Important'] + crossed_13_2_pme['Très important']
crossed_13_2_pme['Non'] = crossed_13_2_pme['Pas important'] + crossed_13_2_pme['Peu Important']
crossed_13_2_pme = crossed_13_2_pme[['Oui', 'Non']]
display(crossed_13_2_pme)

# En pourcentage
crossed_13_2_pme_perc = crossed_13_2_pme.div(crossed_13_2_pme.sum(axis=1), axis=0)*100
crossed_13_2_pme_perc = crossed_13_2_pme_perc.sort_values(by="Oui")
display(crossed_13_2_pme_perc)

# plot bar chart
crossed_13_2_pme_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Motivation des politiques RSE dans les PME")

# Export fichier
plt.savefig("crossed_13_2_pme_perc.svg", bbox_inches='tight')
files.download("crossed_13_2_pme_perc.svg") 
plt.savefig("crossed_13_2_pme_perc.png", bbox_inches='tight')
files.download("crossed_13_2_pme_perc.png")
Degré motivation Pas important Peu Important Important Très important
question_13_image 6 29 136 200
question_13_invest 34 85 119 59
question_13_legales 37 85 171 61
question_13_marque_employ 12 29 140 189
question_13_urgence 9 43 144 180
question_13_volonte 14 33 123 201
Degré motivation Oui Non
question_13_image 336 35
question_13_invest 178 119
question_13_legales 232 122
question_13_marque_employ 329 41
question_13_urgence 324 52
question_13_volonte 324 47
Degré motivation Oui Non
question_13_invest 59.932660 40.067340
question_13_legales 65.536723 34.463277
question_13_urgence 86.170213 13.829787
question_13_volonte 87.331536 12.668464
question_13_marque_employ 88.918919 11.081081
question_13_image 90.566038 9.433962
In [ ]:
# Pour les ETI
crossed_13_2_eti = crossed_13_2.loc[crossed_13_2['categ_taille_entreprises'] == 'ETI']
crossed_13_2_eti = crossed_13_2_eti[['question_13_marque_employ', 'question_13_image', 'question_13_urgence','question_13_invest', 'question_13_volonte', 'question_13_legales']]

# Pivot de la table
crossed_13_2_eti = crossed_13_2_eti.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_13_2_eti = crossed_13_2_eti.reset_index()
crossed_13_2_eti.rename(columns={'index':'Degré motivation'}, inplace=True)
crossed_13_2_eti = crossed_13_2_eti.pivot_table(columns='Degré motivation')
crossed_13_2_eti = crossed_13_2_eti.drop("Non pertinent", axis=1)
crossed_13_2_eti = crossed_13_2_eti.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)
display(crossed_13_2_eti)

# Important Y/N
crossed_13_2_eti['Oui'] = crossed_13_2_eti['Important'] + crossed_13_2_eti['Très important']
crossed_13_2_eti['Non'] = crossed_13_2_eti['Pas important'] + crossed_13_2_eti['Peu Important']
crossed_13_2_eti = crossed_13_2_eti[['Oui', 'Non']]
display(crossed_13_2_eti)

# En pourcentage
crossed_13_2_eti_perc = crossed_13_2_eti.div(crossed_13_2_eti.sum(axis=1), axis=0)*100
crossed_13_2_eti_perc = crossed_13_2_eti_perc.sort_values(by="Oui")
display(crossed_13_2_eti_perc)

# plot bar chart
crossed_13_2_eti_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Motivation des politiques RSE dans les ETI")

# Export fichier
plt.savefig("crossed_13_2_eti_perc.svg", bbox_inches='tight')
files.download("crossed_13_2_eti_perc.svg") 
plt.savefig("crossed_13_2_eti_perc.png", bbox_inches='tight')
files.download("crossed_13_2_eti_perc.png")
Degré motivation Pas important Peu Important Important Très important
question_13_image 3 14 108 113
question_13_invest 16 53 79 47
question_13_legales 6 41 121 68
question_13_marque_employ 0 18 97 124
question_13_urgence 12 33 96 99
question_13_volonte 5 24 114 97
Degré motivation Oui Non
question_13_image 221 17
question_13_invest 126 69
question_13_legales 189 47
question_13_marque_employ 221 18
question_13_urgence 195 45
question_13_volonte 211 29
Degré motivation Oui Non
question_13_invest 64.615385 35.384615
question_13_legales 80.084746 19.915254
question_13_urgence 81.250000 18.750000
question_13_volonte 87.916667 12.083333
question_13_marque_employ 92.468619 7.531381
question_13_image 92.857143 7.142857
In [ ]:
# Pour les grands groupes
crossed_13_2_gg = crossed_13_2.loc[crossed_13_2['categ_taille_entreprises'] == 'Grand groupe']
crossed_13_2_gg = crossed_13_2_gg[['question_13_marque_employ', 'question_13_image', 'question_13_urgence','question_13_invest', 'question_13_volonte', 'question_13_legales']]

# Pivot de la table
crossed_13_2_gg = crossed_13_2_gg.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_13_2_gg = crossed_13_2_gg.reset_index()
crossed_13_2_gg.rename(columns={'index':'Degré motivation'}, inplace=True)
crossed_13_2_gg = crossed_13_2_gg.pivot_table(columns='Degré motivation')
crossed_13_2_gg = crossed_13_2_gg.drop("Non pertinent", axis=1)
crossed_13_2_gg = crossed_13_2_gg.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)
display(crossed_13_2_gg)

# Important Y/N
crossed_13_2_gg['Oui'] = crossed_13_2_gg['Important'] + crossed_13_2_gg['Très important']
crossed_13_2_gg['Non'] = crossed_13_2_gg['Pas important'] + crossed_13_2_gg['Peu Important']
crossed_13_2_gg = crossed_13_2_gg[['Oui', 'Non']]
display(crossed_13_2_gg)

# En pourcentage
crossed_13_2_gg_perc = crossed_13_2_gg.div(crossed_13_2_gg.sum(axis=1), axis=0)*100
crossed_13_2_gg_perc = crossed_13_2_gg_perc.sort_values(by="Oui")
display(crossed_13_2_gg_perc)

# plot bar chart
crossed_13_2_gg_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Motivation des politiques RSE dans les Grands groupes")

# Export fichier
plt.savefig("crossed_13_2_gg_perc.svg", bbox_inches='tight')
files.download("crossed_13_2_gg_perc.svg") 
plt.savefig("crossed_13_2_gg_perc.png", bbox_inches='tight')
files.download("crossed_13_2_gg_perc.png")
Degré motivation Pas important Peu Important Important Très important
question_13_image 1 2 20 31
question_13_invest 3 5 24 19
question_13_legales 1 1 22 30
question_13_marque_employ 1 1 23 29
question_13_urgence 2 8 19 25
question_13_volonte 1 5 25 23
Degré motivation Oui Non
question_13_image 51 3
question_13_invest 43 8
question_13_legales 52 2
question_13_marque_employ 52 2
question_13_urgence 44 10
question_13_volonte 48 6
Degré motivation Oui Non
question_13_urgence 81.481481 18.518519
question_13_invest 84.313725 15.686275
question_13_volonte 88.888889 11.111111
question_13_image 94.444444 5.555556
question_13_legales 96.296296 3.703704
question_13_marque_employ 96.296296 3.703704

Questions 14&2 : Freins des politiques RSE en fonction de la taille de l'entreprise¶

In [ ]:
crossed_14_2 = df_2022[['categ_taille_entreprises','question_14_temps', 'question_14_budget', 'question_14_equipe', 'question_14_connaissance', 'question_14_m_management','question_14_direction', 'question_14_ope', 'question_14_long_terme','question_14_impact']]
crossed_14_2.head()
Out[ ]:
categ_taille_entreprises question_14_temps question_14_budget question_14_equipe question_14_connaissance question_14_m_management question_14_direction question_14_ope question_14_long_terme question_14_impact
102 PME Important Important Peu Important Pas important Important Très important Pas important Très important NaN
93 PME Très important Important Important Important Important Non pertinent Important Très important NaN
88 ETI Très important Très important Très important Peu Important Important Peu Important Peu Important Peu Important NaN
78 TPE Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent Non pertinent NaN
84 TPE Peu Important Important Peu Important Important Non pertinent Non pertinent Non pertinent Important NaN
In [ ]:
# Pour les TPE
crossed_14_2_tpe = crossed_14_2.loc[crossed_14_2['categ_taille_entreprises'] == 'TPE']
crossed_14_2_tpe = crossed_14_2_tpe[['question_14_temps', 'question_14_budget', 'question_14_equipe', 'question_14_connaissance', 'question_14_m_management','question_14_direction', 'question_14_ope', 'question_14_long_terme','question_14_impact']]

# Pivot de la table
crossed_14_2_tpe = crossed_14_2_tpe.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_14_2_tpe = crossed_14_2_tpe.reset_index()
crossed_14_2_tpe.rename(columns={'index':'Freins'}, inplace=True)
crossed_14_2_tpe = crossed_14_2_tpe.pivot_table(columns='Freins')
crossed_14_2_tpe = crossed_14_2_tpe.drop("Non pertinent", axis=1)
crossed_14_2_tpe = crossed_14_2_tpe.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)

# Important Y/N
crossed_14_2_tpe['Oui'] = crossed_14_2_tpe['Important'] + crossed_14_2_tpe['Très important']
crossed_14_2_tpe['Non'] = crossed_14_2_tpe['Pas important'] + crossed_14_2_tpe['Peu Important']
crossed_14_2_tpe = crossed_14_2_tpe[['Oui', 'Non']]
display(crossed_14_2_tpe)

# En pourcentage
crossed_14_2_tpe_perc = crossed_14_2_tpe.div(crossed_14_2_tpe.sum(axis=1), axis=0)*100
crossed_14_2_tpe_perc = crossed_14_2_tpe_perc.sort_values(by="Oui")
display(crossed_14_2_tpe_perc)

# plot bar chart
crossed_14_2_tpe_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Freins des politiques RSE dans les TPE")

# Export fichier
plt.savefig("crossed_14_2_tpe_perc.svg", bbox_inches='tight')
files.download("crossed_14_2_tpe_perc.svg") 
plt.savefig("crossed_14_2_tpe_perc.png", bbox_inches='tight')
files.download("crossed_14_2_tpe_perc.png")
Freins Oui Non
question_14_budget 70 35
question_14_connaissance 37 60
question_14_direction 16 54
question_14_equipe 57 44
question_14_impact 43 29
question_14_long_terme 41 49
question_14_m_management 18 32
question_14_ope 26 45
question_14_temps 78 27
Freins Oui Non
question_14_direction 22.857143 77.142857
question_14_m_management 36.000000 64.000000
question_14_ope 36.619718 63.380282
question_14_connaissance 38.144330 61.855670
question_14_long_terme 45.555556 54.444444
question_14_equipe 56.435644 43.564356
question_14_impact 59.722222 40.277778
question_14_budget 66.666667 33.333333
question_14_temps 74.285714 25.714286
In [ ]:
# Pour les PME
crossed_14_2_pme = crossed_14_2.loc[crossed_14_2['categ_taille_entreprises'] == 'PME']
crossed_14_2_pme = crossed_14_2_pme[['question_14_temps', 'question_14_budget', 'question_14_equipe', 'question_14_connaissance', 'question_14_m_management','question_14_direction', 'question_14_ope', 'question_14_long_terme','question_14_impact']]

# Pivot de la table
crossed_14_2_pme = crossed_14_2_pme.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_14_2_pme = crossed_14_2_pme.reset_index()
crossed_14_2_pme.rename(columns={'index':'Freins'}, inplace=True)
crossed_14_2_pme = crossed_14_2_pme.pivot_table(columns='Freins')
crossed_14_2_pme = crossed_14_2_pme.drop("Non pertinent", axis=1)
crossed_14_2_pme = crossed_14_2_pme.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)

# Important Y/N
crossed_14_2_pme['Oui'] = crossed_14_2_pme['Important'] + crossed_14_2_pme['Très important']
crossed_14_2_pme['Non'] = crossed_14_2_pme['Pas important'] + crossed_14_2_pme['Peu Important']
crossed_14_2_pme = crossed_14_2_pme[['Oui', 'Non']]
display(crossed_14_2_pme)

# En pourcentage
crossed_14_2_pme_perc = crossed_14_2_pme.div(crossed_14_2_pme.sum(axis=1), axis=0)*100
crossed_14_2_pme_perc = crossed_14_2_pme_perc.sort_values(by="Oui")
display(crossed_14_2_pme_perc)

# plot bar chart
crossed_14_2_pme_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Freins des politiques RSE dans les PME")

# Export fichier
plt.savefig("crossed_14_2_pme_perc.svg", bbox_inches='tight')
files.download("crossed_14_2_pme_perc.svg") 
plt.savefig("crossed_14_2_pme_perc.png", bbox_inches='tight')
files.download("crossed_14_2_pme_perc.png")
Freins Oui Non
question_14_budget 207 154
question_14_connaissance 194 169
question_14_direction 115 224
question_14_equipe 229 132
question_14_impact 161 71
question_14_long_terme 230 130
question_14_m_management 147 188
question_14_ope 185 171
question_14_temps 315 57
Freins Oui Non
question_14_direction 33.923304 66.076696
question_14_m_management 43.880597 56.119403
question_14_ope 51.966292 48.033708
question_14_connaissance 53.443526 46.556474
question_14_budget 57.340720 42.659280
question_14_equipe 63.434903 36.565097
question_14_long_terme 63.888889 36.111111
question_14_impact 69.396552 30.603448
question_14_temps 84.677419 15.322581
In [ ]:
# Pour les ETI
crossed_14_2_eti = crossed_14_2.loc[crossed_14_2['categ_taille_entreprises'] == 'ETI']
crossed_14_2_eti = crossed_14_2_eti[['question_14_temps', 'question_14_budget', 'question_14_equipe', 'question_14_connaissance', 'question_14_m_management','question_14_direction', 'question_14_ope', 'question_14_long_terme','question_14_impact']]

# Pivot de la table
crossed_14_2_eti = crossed_14_2_eti.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_14_2_eti = crossed_14_2_eti.reset_index()
crossed_14_2_eti.rename(columns={'index':'Freins'}, inplace=True)
crossed_14_2_eti = crossed_14_2_eti.pivot_table(columns='Freins')
crossed_14_2_eti = crossed_14_2_eti.drop("Non pertinent", axis=1)
crossed_14_2_eti = crossed_14_2_eti.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)

# Important Y/N
crossed_14_2_eti['Oui'] = crossed_14_2_eti['Important'] + crossed_14_2_eti['Très important']
crossed_14_2_eti['Non'] = crossed_14_2_eti['Pas important'] + crossed_14_2_eti['Peu Important']
crossed_14_2_eti = crossed_14_2_eti[['Oui', 'Non']]
display(crossed_14_2_eti)

# En pourcentage
crossed_14_2_eti_perc = crossed_14_2_eti.div(crossed_14_2_eti.sum(axis=1), axis=0)*100
crossed_14_2_eti_perc = crossed_14_2_eti_perc.sort_values(by="Oui")
display(crossed_14_2_eti_perc)

# plot bar chart
crossed_14_2_eti_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Freins des politiques RSE dans les ETI")

# Export fichier
plt.savefig("crossed_14_2_eti_perc.svg", bbox_inches='tight')
files.download("crossed_14_2_eti_perc.svg") 
plt.savefig("crossed_14_2_eti_perc.png", bbox_inches='tight')
files.download("crossed_14_2_eti_perc.png")
Freins Oui Non
question_14_budget 120 116
question_14_connaissance 129 106
question_14_direction 96 132
question_14_equipe 161 75
question_14_impact 108 43
question_14_long_terme 139 95
question_14_m_management 163 67
question_14_ope 151 86
question_14_temps 194 45
Freins Oui Non
question_14_direction 42.105263 57.894737
question_14_budget 50.847458 49.152542
question_14_connaissance 54.893617 45.106383
question_14_long_terme 59.401709 40.598291
question_14_ope 63.713080 36.286920
question_14_equipe 68.220339 31.779661
question_14_m_management 70.869565 29.130435
question_14_impact 71.523179 28.476821
question_14_temps 81.171548 18.828452
In [ ]:
# Pour les Grands groupes
crossed_14_2_gg = crossed_14_2.loc[crossed_14_2['categ_taille_entreprises'] == 'Grand groupe']
crossed_14_2_gg = crossed_14_2_gg[['question_14_temps', 'question_14_budget', 'question_14_equipe', 'question_14_connaissance', 'question_14_m_management','question_14_direction', 'question_14_ope', 'question_14_long_terme','question_14_impact']]

# Pivot de la table
crossed_14_2_gg = crossed_14_2_gg.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_14_2_gg = crossed_14_2_gg.reset_index()
crossed_14_2_gg.rename(columns={'index':'Freins'}, inplace=True)
crossed_14_2_gg = crossed_14_2_gg.pivot_table(columns='Freins')
crossed_14_2_gg = crossed_14_2_gg.drop("Non pertinent", axis=1)
crossed_14_2_gg = crossed_14_2_gg.reindex(["Pas important", "Peu Important", "Important", "Très important"], axis=1)

# Important Y/N
crossed_14_2_gg['Oui'] = crossed_14_2_gg['Important'] + crossed_14_2_gg['Très important']
crossed_14_2_gg['Non'] = crossed_14_2_gg['Pas important'] + crossed_14_2_gg['Peu Important']
crossed_14_2_gg = crossed_14_2_gg[['Oui', 'Non']]
display(crossed_14_2_gg)

# En pourcentage
crossed_14_2_gg_perc = crossed_14_2_gg.div(crossed_14_2_gg.sum(axis=1), axis=0)*100
crossed_14_2_gg_perc = crossed_14_2_gg_perc.sort_values(by="Oui")
display(crossed_14_2_gg_perc)

# plot bar chart
crossed_14_2_gg_perc.plot(kind='bar')
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Freins des politiques RSE dans les grands groupes")

# Export fichier
plt.savefig("crossed_14_2_gg_perc.svg", bbox_inches='tight')
files.download("crossed_14_2_gg_perc.svg") 
plt.savefig("crossed_14_2_gg_perc.png", bbox_inches='tight')
files.download("crossed_14_2_gg_perc.png")
Freins Oui Non
question_14_budget 37 15
question_14_connaissance 31 22
question_14_direction 21 30
question_14_equipe 40 13
question_14_impact 31 9
question_14_long_terme 24 26
question_14_m_management 37 16
question_14_ope 32 19
question_14_temps 42 11
Freins Oui Non
question_14_direction 41.176471 58.823529
question_14_long_terme 48.000000 52.000000
question_14_connaissance 58.490566 41.509434
question_14_ope 62.745098 37.254902
question_14_m_management 69.811321 30.188679
question_14_budget 71.153846 28.846154
question_14_equipe 75.471698 24.528302
question_14_impact 77.500000 22.500000
question_14_temps 79.245283 20.754717

Questions additionnelles : Aspect Social¶

Question 36 : Principales actions d'engagement des collaborateur·ices mises en place par les entreprises¶

In [ ]:
df_2022['question_36_dons'].value_counts()
Out[ ]:
Ce n'est pas prévu                   358
Nous le faisons déjà                 195
Nous réfléchissons à nous engager    130
Name: question_36_dons, dtype: int64
In [ ]:
import pandas as pd

# Sélection des colonnes pertinentes pour la question 10
question_36 = df_2022[['question_36_mecenat', 'question_36_collects', 'question_36_mentorat', 'question_36_missions', 'question_36_dons', 'question_36_projet', 'question_36_events', 'question_36_teamB']]
display(question_36.head())

# Pivot de la table
question_36 = question_36.apply(pd.Series.value_counts).fillna(0).astype(int)

# Renommage de la première colonne et pivot
question_36 = question_36.reset_index()
question_36.rename(columns={'index':'Réponse'}, inplace=True)
question_36 = question_36.pivot_table(columns='Réponse')
question_36 = question_36.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)

question_36
question_36_mecenat question_36_collects question_36_mentorat question_36_missions question_36_dons question_36_projet question_36_events question_36_teamB
102 Ce n'est pas prévu Nous réfléchissons à nous engager Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu Nous le faisons déjà Ce n'est pas prévu
93 Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Ce n'est pas prévu Ce n'est pas prévu NaN
88 Nous réfléchissons à nous engager Nous le faisons déjà Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu Ce n'est pas prévu Nous le faisons déjà Nous réfléchissons à nous engager
78 Nous réfléchissons à nous engager Nous le faisons déjà Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager
84 Nous le faisons déjà Nous réfléchissons à nous engager Nous le faisons déjà Nous le faisons déjà Ce n'est pas prévu Ce n'est pas prévu Nous le faisons déjà Nous le faisons déjà
Out[ ]:
Réponse Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
question_36_collects 388 142 178
question_36_dons 195 130 358
question_36_events 350 183 178
question_36_mecenat 248 218 221
question_36_mentorat 293 203 199
question_36_missions 262 196 224
question_36_projet 149 125 373
question_36_teamB 169 241 252
In [ ]:
question_36
Out[ ]:
Réponse Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
question_36_collects 388 142 178
question_36_dons 195 130 358
question_36_events 350 183 178
question_36_mecenat 248 218 221
question_36_mentorat 293 203 199
question_36_missions 262 196 224
question_36_projet 149 125 373
question_36_teamB 169 241 252
In [ ]:
question_36_perc = question_36.div(question_36.sum(axis=1), axis=0)*100
question_36_perc = question_36_perc.sort_values(by='Nous le faisons déjà', ascending=True)
display(question_36_perc)

question_36_perc.plot(kind='barh', stacked=True)

plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Principales actions d'engagement ou non chez les collaborateurs")
plt.xlabel("Actions")
plt.ylabel("Pourcentage cumulé")

# Export fichier
#plt.savefig("question_36_perc_2022.svg", bbox_inches='tight')
#files.download("question_36_perc_2022.svg") 
#plt.savefig("question_36_perc_2022.png", bbox_inches='tight')
#files.download("question_36_perc_2022.png") 

plt.show()
Réponse Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
question_36_projet 23.029366 19.319938 57.650696
question_36_teamB 25.528701 36.404834 38.066465
question_36_dons 28.550512 19.033675 52.415813
question_36_mecenat 36.098981 31.732169 32.168850
question_36_missions 38.416422 28.739003 32.844575
question_36_mentorat 42.158273 29.208633 28.633094
question_36_events 49.226442 25.738397 25.035162
question_36_collects 54.802260 20.056497 25.141243

Question 37 : Principales causes soutenues par les entreprises à travers leurs engagements solidaires¶

In [ ]:
df_2022['question_37_aide'].value_counts()
Out[ ]:
Ce n'est pas prévu                   398
Nous menons quelques actions         161
Nous réfléchissons à nous engager     79
C’est un axe clé                      32
Name: question_37_aide, dtype: int64
In [ ]:
import pandas as pd

# Sélection des colonnes pertinentes pour la question 10
question_37 = df_2022[['question_37_aide', 'question_37_art', 'question_37_education', 'question_37_egalite', 'question_37_emploi', 'question_37_entreprenariat', 'question_37_environnement', 'question_37_handicap', 'question_37_lien', 'question_37_lutte', 'question_37_pauvrete', 'question_37_protection', 'question_37_sante', 'question_37_solidarite']]
display(question_37.head())

# Pivot de la table
question_37 = question_37.apply(pd.Series.value_counts).fillna(0).astype(int)

# Renommage de la première colonne et pivot
question_37 = question_37.reset_index()
question_37.rename(columns={'index':'Réponse'}, inplace=True)
question_37 = question_37.pivot_table(columns='Réponse')
question_37 = question_37.reindex(["C’est un axe clé", "Nous menons quelques actions", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)

display(question_37)
question_37_aide question_37_art question_37_education question_37_egalite question_37_emploi question_37_entreprenariat question_37_environnement question_37_handicap question_37_lien question_37_lutte question_37_pauvrete question_37_protection question_37_sante question_37_solidarite
102 Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu NaN Ce n'est pas prévu Ce n'est pas prévu Nous menons quelques actions Nous menons quelques actions Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu
93 Ce n'est pas prévu Nous menons quelques actions C’est un axe clé Nous menons quelques actions Nous menons quelques actions Ce n'est pas prévu Nous réfléchissons à nous engager Nous réfléchissons à nous engager NaN Nous réfléchissons à nous engager Nous réfléchissons à nous engager Ce n'est pas prévu Nous réfléchissons à nous engager Ce n'est pas prévu
88 Nous menons quelques actions NaN Nous menons quelques actions Nous réfléchissons à nous engager Nous menons quelques actions Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous menons quelques actions Nous réfléchissons à nous engager Nous réfléchissons à nous engager Ce n'est pas prévu Nous menons quelques actions Ce n'est pas prévu
78 Nous réfléchissons à nous engager Nous menons quelques actions Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous menons quelques actions Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager
84 Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager C’est un axe clé Nous réfléchissons à nous engager Nous réfléchissons à nous engager C’est un axe clé Nous réfléchissons à nous engager C’est un axe clé Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager C’est un axe clé
Réponse C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 32 161 79 398
question_37_art 52 128 68 412
question_37_education 159 201 142 185
question_37_egalite 137 157 120 254
question_37_emploi 182 215 124 165
question_37_entreprenariat 98 128 122 304
question_37_environnement 245 207 164 111
question_37_handicap 150 194 176 167
question_37_lien 57 111 154 335
question_37_lutte 129 179 144 227
question_37_pauvrete 95 155 136 275
question_37_protection 33 67 101 443
question_37_sante 147 189 125 210
question_37_solidarite 56 169 116 321
In [ ]:
display(question_37)
Réponse C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 32 161 79 398
question_37_art 52 128 68 412
question_37_education 159 201 142 185
question_37_egalite 137 157 120 254
question_37_emploi 182 215 124 165
question_37_entreprenariat 98 128 122 304
question_37_environnement 245 207 164 111
question_37_handicap 150 194 176 167
question_37_lien 57 111 154 335
question_37_lutte 129 179 144 227
question_37_pauvrete 95 155 136 275
question_37_protection 33 67 101 443
question_37_sante 147 189 125 210
question_37_solidarite 56 169 116 321
In [ ]:
question_37_perc = question_37.div(question_37.sum(axis=1), axis=0)*100
question_37_perc = question_37_perc.sort_values(by="C’est un axe clé", ascending=True)
display(question_37_perc)

question_37_perc.plot(kind='barh', stacked=True)

plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Principales causes soutenues")
plt.xlabel("Causes")
plt.ylabel("Pourcentage cumulé")

# Export fichier
#plt.savefig("question_37_perc_2022.svg", bbox_inches='tight')
#files.download("question_37_perc_2022.svg") 
#plt.savefig("question_37_perc_2022.png", bbox_inches='tight')
#files.download("question_37_perc_2022.png") 

plt.show()
Réponse C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 4.776119 24.029851 11.791045 59.402985
question_37_protection 5.124224 10.403727 15.683230 68.788820
question_37_art 7.878788 19.393939 10.303030 62.424242
question_37_solidarite 8.459215 25.528701 17.522659 48.489426
question_37_lien 8.675799 16.894977 23.439878 50.989346
question_37_pauvrete 14.372163 23.449319 20.574887 41.603631
question_37_entreprenariat 15.030675 19.631902 18.711656 46.625767
question_37_lutte 18.998527 26.362297 21.207658 33.431517
question_37_egalite 20.508982 23.502994 17.964072 38.023952
question_37_handicap 21.834061 28.238719 25.618632 24.308588
question_37_sante 21.907601 28.166915 18.628912 31.296572
question_37_education 23.144105 29.257642 20.669578 26.928675
question_37_emploi 26.530612 31.341108 18.075802 24.052478
question_37_environnement 33.700138 28.473177 22.558459 15.268226
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]:
 

Questions 34&2 : Part d'entreprises ayant déjà mis en place des actions d'engagement solidaire / de philanthropie en fonction de leur taille¶

In [ ]:
# Tableau croisé 34/2
crossed_34_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Avez-vous déjà mis en place des *actions d’engagement solidaire *ou de *philanthropie *?"])
crossed_34_2 = crossed_34_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_34_2 = crossed_34_2.reindex(["Oui", "Non, mais nous souhaitons nous lancer", "Non, ce n’est pas dans nos projets"], axis=1)
crossed_34_2
Out[ ]:
Avez-vous déjà mis en place des *actions d’engagement solidaire *ou de *philanthropie *? Oui Non, mais nous souhaitons nous lancer Non, ce n’est pas dans nos projets
categ_taille_entreprises
TPE 75 23 17
PME 254 51 50
ETI 195 20 11
Grand groupe 46 2 1
In [ ]:
# Tableau croisé 34/2 en pourcentage
crossed_34_2_perc = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Avez-vous déjà mis en place des *actions d’engagement solidaire *ou de *philanthropie *?"], normalize='index')*100
crossed_34_2_perc = crossed_34_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_34_2_perc = crossed_34_2_perc.reindex(["Oui", "Non, mais nous souhaitons nous lancer", "Non, ce n’est pas dans nos projets"], axis=1)
crossed_34_2_perc
Out[ ]:
Avez-vous déjà mis en place des *actions d’engagement solidaire *ou de *philanthropie *? Oui Non, mais nous souhaitons nous lancer Non, ce n’est pas dans nos projets
categ_taille_entreprises
TPE 65.217391 20.000000 14.782609
PME 71.549296 14.366197 14.084507
ETI 86.283186 8.849558 4.867257
Grand groupe 93.877551 4.081633 2.040816
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_34_2_perc.plot.bar(rot=0, stacked=True)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Questions 34&2 : Part d'entreprises ayant déjà mis en place des actions d'engagement solidaire / de philanthropie en fonction de leur taille")

# Export fichier
#plt.savefig("crossed_34_2_perc.svg", bbox_inches='tight')
#files.download("crossed_34_2_perc.svg") 
#plt.savefig("crossed_34_2_perc.png", bbox_inches='tight')
#files.download("crossed_34_2_perc.png") 

plt.show()

Questions 35&2 : Part d'entreprises accordant un crédit de jours d'engagement solidaire à leurs équipes en fonction de leur taille¶

In [ ]:
df_2022["Accordez-vous un *crédit de jour d’engagement* à vos collaborateurs pour leur permettre de s’engager sur leur temps de travail ? Si oui, combien de jours par an ?"].value_counts()
Out[ ]:
Non, ce n’est pas prévu                         339
Non, mais nous souhaitons le mettre en place    205
Oui, 1 jour                                      74
Oui, entre 2 et 3 jours                          44
Oui, plus de 3 jours                             42
Name: Accordez-vous un *crédit de jour d’engagement* à vos collaborateurs pour leur permettre de s’engager sur leur temps de travail ? Si oui, combien de jours par an ?, dtype: int64
In [ ]:
# Tableau croisé 34/2
crossed_35_2 = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Accordez-vous un *crédit de jour d’engagement* à vos collaborateurs pour leur permettre de s’engager sur leur temps de travail ? Si oui, combien de jours par an ?"])
crossed_35_2 = crossed_35_2.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_35_2 = crossed_35_2.reindex(["Oui, plus de 3 jours", "Oui, entre 2 et 3 jours", "Oui, 1 jour", "Non, mais nous souhaitons le mettre en place", "Non, ce n’est pas prévu"], axis=1)
crossed_35_2
Out[ ]:
Accordez-vous un *crédit de jour d’engagement* à vos collaborateurs pour leur permettre de s’engager sur leur temps de travail ? Si oui, combien de jours par an ? Oui, plus de 3 jours Oui, entre 2 et 3 jours Oui, 1 jour Non, mais nous souhaitons le mettre en place Non, ce n’est pas prévu
categ_taille_entreprises
TPE 14 8 4 36 46
PME 19 11 34 88 188
ETI 9 22 23 66 92
Grand groupe 0 3 13 14 13
In [ ]:
# Tableau croisé 34/2 en pourcentage
crossed_35_2_perc = pd.crosstab(df_2022.categ_taille_entreprises, df_2022["Accordez-vous un *crédit de jour d’engagement* à vos collaborateurs pour leur permettre de s’engager sur leur temps de travail ? Si oui, combien de jours par an ?"], normalize='index')*100
crossed_35_2_perc = crossed_35_2_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
crossed_35_2_perc = crossed_35_2_perc.reindex(["Oui, plus de 3 jours", "Oui, entre 2 et 3 jours", "Oui, 1 jour", "Non, mais nous souhaitons le mettre en place", "Non, ce n’est pas prévu"], axis=1)
crossed_35_2_perc
Out[ ]:
Accordez-vous un *crédit de jour d’engagement* à vos collaborateurs pour leur permettre de s’engager sur leur temps de travail ? Si oui, combien de jours par an ? Oui, plus de 3 jours Oui, entre 2 et 3 jours Oui, 1 jour Non, mais nous souhaitons le mettre en place Non, ce n’est pas prévu
categ_taille_entreprises
TPE 12.962963 7.407407 3.703704 33.333333 42.592593
PME 5.588235 3.235294 10.000000 25.882353 55.294118
ETI 4.245283 10.377358 10.849057 31.132075 43.396226
Grand groupe 0.000000 6.976744 30.232558 32.558140 30.232558
In [ ]:
import matplotlib.pyplot as plt

# plot grouped bar chart
crossed_35_2_perc.plot.bar(rot=0, stacked=True)
plt.legend(bbox_to_anchor=(1.05, 1))
plt.title("Questions 35&2 : Part d'entreprises accordant un crédit de jours d'engagement solidaire à leurs équipes en fonction de leur taille")

# Export fichier
#plt.savefig("crossed_35_2_perc.svg", bbox_inches='tight')
#files.download("crossed_35_2_perc.svg") 
#plt.savefig("crossed_35_2_perc.png", bbox_inches='tight')
#files.download("crossed_35_2_perc.png") 

plt.show()

Questions 36&2 : Type d'actions sociétales les plus (ou moins) réalisées par les entreprises en fonction de leur taille¶

In [ ]:
crossed_36_2 = df_2022[['categ_taille_entreprises','question_36_mecenat','question_36_collects','question_36_mentorat','question_36_missions','question_36_dons','question_36_projet','question_36_events','question_36_teamB']]
crossed_36_2.head()
Out[ ]:
categ_taille_entreprises question_36_mecenat question_36_collects question_36_mentorat question_36_missions question_36_dons question_36_projet question_36_events question_36_teamB
102 PME Ce n'est pas prévu Nous réfléchissons à nous engager Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu Nous le faisons déjà Ce n'est pas prévu
93 PME Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Ce n'est pas prévu Ce n'est pas prévu NaN
88 ETI Nous réfléchissons à nous engager Nous le faisons déjà Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu Ce n'est pas prévu Nous le faisons déjà Nous réfléchissons à nous engager
78 TPE Nous réfléchissons à nous engager Nous le faisons déjà Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager
84 TPE Nous le faisons déjà Nous réfléchissons à nous engager Nous le faisons déjà Nous le faisons déjà Ce n'est pas prévu Ce n'est pas prévu Nous le faisons déjà Nous le faisons déjà
In [ ]:
# Pour les TPE
crossed_36_2_tpe = crossed_36_2.loc[crossed_36_2['categ_taille_entreprises'] == 'TPE']
crossed_36_2_tpe = crossed_36_2_tpe[['question_36_mecenat','question_36_collects','question_36_mentorat','question_36_missions','question_36_dons','question_36_projet','question_36_events','question_36_teamB']]

# Pivot de la table
crossed_36_2_tpe = crossed_36_2_tpe.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_36_2_tpe = crossed_36_2_tpe.reset_index()
crossed_36_2_tpe.rename(columns={'index':'Actions'}, inplace=True)
crossed_36_2_tpe = crossed_36_2_tpe.pivot_table(columns='Actions')
crossed_36_2_tpe = crossed_36_2_tpe.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
display(crossed_36_2_tpe)

# En pourcentage
crossed_36_2_tpe_perc = crossed_36_2_tpe.div(crossed_36_2_tpe.sum(axis=1), axis=0)*100
crossed_36_2_tpe_perc = crossed_36_2_tpe_perc.sort_values(by="Nous le faisons déjà")
display(crossed_36_2_tpe_perc)

# plot bar chart
crossed_36_2_tpe_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Type d'actions sociétales les plus (ou moins) réalisées dans les TPE")
plt.show()
# Export fichier
#plt.savefig("crossed_36_2_tpe_perc.svg", bbox_inches='tight')
#files.download("crossed_36_2_tpe_perc.svg") 
#plt.savefig("crossed_36_2_tpe_perc.png", bbox_inches='tight')
#files.download("crossed_36_2_tpe_perc.png")
Actions Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
question_36_collects 25 30 45
question_36_dons 27 22 53
question_36_events 27 35 36
question_36_mecenat 49 30 25
question_36_mentorat 47 29 26
question_36_missions 38 34 28
question_36_projet 11 21 59
question_36_teamB 22 36 41
Actions Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
question_36_projet 12.087912 23.076923 64.835165
question_36_teamB 22.222222 36.363636 41.414141
question_36_collects 25.000000 30.000000 45.000000
question_36_dons 26.470588 21.568627 51.960784
question_36_events 27.551020 35.714286 36.734694
question_36_missions 38.000000 34.000000 28.000000
question_36_mentorat 46.078431 28.431373 25.490196
question_36_mecenat 47.115385 28.846154 24.038462
In [ ]:
display(crossed_36_2_tpe_perc)
Actions Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
question_36_projet 12.087912 23.076923 64.835165
question_36_teamB 22.222222 36.363636 41.414141
question_36_collects 25.000000 30.000000 45.000000
question_36_dons 26.470588 21.568627 51.960784
question_36_events 27.551020 35.714286 36.734694
question_36_missions 38.000000 34.000000 28.000000
question_36_mentorat 46.078431 28.431373 25.490196
question_36_mecenat 47.115385 28.846154 24.038462
In [ ]:
# Pour les PME
crossed_36_2_pme = crossed_36_2.loc[crossed_36_2['categ_taille_entreprises'] == 'PME']
crossed_36_2_pme = crossed_36_2_pme[['question_36_mecenat','question_36_collects','question_36_mentorat','question_36_missions','question_36_dons','question_36_projet','question_36_events','question_36_teamB']]

# Pivot de la table
crossed_36_2_pme = crossed_36_2_pme.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_36_2_pme = crossed_36_2_pme.reset_index()
crossed_36_2_pme.rename(columns={'index':'Actions'}, inplace=True)
crossed_36_2_pme = crossed_36_2_pme.pivot_table(columns='Actions')
crossed_36_2_pme = crossed_36_2_pme.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)


# En pourcentage
crossed_36_2_pme_perc = crossed_36_2_pme.div(crossed_36_2_pme.sum(axis=1), axis=0)*100
crossed_36_2_pme_perc = crossed_36_2_pme_perc.sort_values(by="Nous le faisons déjà")
display(crossed_36_2_pme_perc)

# plot bar chart
crossed_36_2_pme_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Type d'actions sociétales les plus (ou moins) réalisées dans les PME")

# Export fichier
#plt.savefig("crossed_36_2_pme_perc.svg", bbox_inches='tight')
#files.download("crossed_36_2_pme_perc.svg") 
#plt.savefig("crossed_36_2_pme_perc.png", bbox_inches='tight')
#files.download("crossed_36_2_pme_perc.png")
Actions Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
question_36_projet 15.112540 18.649518 66.237942
question_36_teamB 19.565217 38.198758 42.236025
question_36_dons 24.770642 18.042813 57.186544
question_36_mecenat 25.835866 33.738602 40.425532
question_36_missions 30.513595 29.909366 39.577039
question_36_mentorat 33.432836 31.641791 34.925373
question_36_events 40.175953 29.032258 30.791789
question_36_collects 47.838617 23.054755 29.106628
Out[ ]:
Text(0.5, 1.0, "Type d'actions sociétales les plus (ou moins) réalisées dans les PME")
In [ ]:
display(crossed_36_2_pme)
Actions Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
question_36_collects 166 80 101
question_36_dons 81 59 187
question_36_events 137 99 105
question_36_mecenat 85 111 133
question_36_mentorat 112 106 117
question_36_missions 101 99 131
question_36_projet 47 58 206
question_36_teamB 63 123 136
In [ ]:
# Pour les ETI
crossed_36_2_eti = crossed_36_2.loc[crossed_36_2['categ_taille_entreprises'] == 'ETI']
crossed_36_2_eti = crossed_36_2_eti[['question_36_mecenat','question_36_collects','question_36_mentorat','question_36_missions','question_36_dons','question_36_projet','question_36_events','question_36_teamB']]

# Pivot de la table
crossed_36_2_eti = crossed_36_2_eti.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_36_2_eti = crossed_36_2_eti.reset_index()
crossed_36_2_eti.rename(columns={'index':'Actions'}, inplace=True)
crossed_36_2_eti = crossed_36_2_eti.pivot_table(columns='Actions')
crossed_36_2_eti = crossed_36_2_eti.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)


# En pourcentage
crossed_36_2_eti_perc = crossed_36_2_eti.div(crossed_36_2_eti.sum(axis=1), axis=0)*100
crossed_36_2_eti_perc = crossed_36_2_eti_perc.sort_values(by="Nous le faisons déjà")
display(crossed_36_2_eti_perc)

# plot bar chart
crossed_36_2_eti_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Type d'actions sociétales les plus (ou moins) réalisées dans les ETI")

# Export fichier
#plt.savefig("crossed_36_2_eti_perc.svg", bbox_inches='tight')
#files.download("crossed_36_2_eti_perc.svg") 
#plt.savefig("crossed_36_2_eti_perc.png", bbox_inches='tight')
#files.download("crossed_36_2_eti_perc.png")
Actions Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
question_36_teamB 30.845771 35.323383 33.830846
question_36_projet 31.343284 20.398010 48.258706
question_36_dons 31.428571 20.476190 48.095238
question_36_mecenat 44.230769 29.326923 26.442308
question_36_missions 46.859903 25.603865 27.536232
question_36_mentorat 49.528302 25.471698 25.000000
question_36_events 66.071429 18.303571 15.625000
question_36_collects 73.271889 12.903226 13.824885
Out[ ]:
Text(0.5, 1.0, "Type d'actions sociétales les plus (ou moins) réalisées dans les ETI")
In [ ]:
display(crossed_36_2_eti)
Actions Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
question_36_collects 159 28 30
question_36_dons 66 43 101
question_36_events 148 41 35
question_36_mecenat 92 61 55
question_36_mentorat 105 54 53
question_36_missions 97 53 57
question_36_projet 63 41 97
question_36_teamB 62 71 68
In [ ]:
# Pour les GG
crossed_36_2_gg = crossed_36_2.loc[crossed_36_2['categ_taille_entreprises'] == 'Grand groupe']
crossed_36_2_gg = crossed_36_2_gg[['question_36_mecenat','question_36_collects','question_36_mentorat','question_36_missions','question_36_dons','question_36_projet','question_36_events','question_36_teamB']]

# Pivot de la table
crossed_36_2_gg = crossed_36_2_gg.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_36_2_gg = crossed_36_2_gg.reset_index()
crossed_36_2_gg.rename(columns={'index':'Actions'}, inplace=True)
crossed_36_2_gg = crossed_36_2_gg.pivot_table(columns='Actions')
crossed_36_2_gg = crossed_36_2_gg.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)


# En pourcentage
crossed_36_2_gg_perc = crossed_36_2_gg.div(crossed_36_2_gg.sum(axis=1), axis=0)*100
crossed_36_2_gg_perc = crossed_36_2_gg_perc.sort_values(by="Nous le faisons déjà")
display(crossed_36_2_gg_perc)

# plot bar chart
crossed_36_2_gg_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Type d'actions sociétales les plus (ou moins) réalisées dans les Grands groupes")

# Export fichier
#plt.savefig("crossed_36_2_gg_perc.svg", bbox_inches='tight')
#files.download("crossed_36_2_gg_perc.svg") 
#plt.savefig("crossed_36_2_gg_perc.png", bbox_inches='tight')
#files.download("crossed_36_2_gg_perc.png")
Actions Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
question_36_dons 47.727273 13.636364 38.636364
question_36_mecenat 47.826087 34.782609 17.391304
question_36_teamB 55.000000 27.500000 17.500000
question_36_missions 59.090909 22.727273 18.181818
question_36_mentorat 63.043478 30.434783 6.521739
question_36_projet 63.636364 11.363636 25.000000
question_36_events 79.166667 16.666667 4.166667
question_36_collects 86.363636 9.090909 4.545455
Out[ ]:
Text(0.5, 1.0, "Type d'actions sociétales les plus (ou moins) réalisées dans les Grands groupes")
In [ ]:
display(crossed_36_2_gg)
Actions Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
question_36_collects 38 4 2
question_36_dons 21 6 17
question_36_events 38 8 2
question_36_mecenat 22 16 8
question_36_mentorat 29 14 3
question_36_missions 26 10 8
question_36_projet 28 5 11
question_36_teamB 22 11 7

Questions 36.1&2 : Degré d'avancement des entreprises répondantes sur le mécénat de compétences en fonction de leur taille¶

In [ ]:
mecenat_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_mecenat']]
mecenat_taille_ent.head()
Out[ ]:
categ_taille_entreprises question_36_mecenat
102 PME Ce n'est pas prévu
93 PME Nous réfléchissons à nous engager
88 ETI Nous réfléchissons à nous engager
78 TPE Nous réfléchissons à nous engager
84 TPE Nous le faisons déjà
In [ ]:
# Tableau croisé 36.1/2
mecenat_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_mecenat)
mecenat_taille_ent = mecenat_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
mecenat_taille_ent = mecenat_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
mecenat_taille_ent

# En pourcentage
mecenat_taille_ent_perc = mecenat_taille_ent.div(mecenat_taille_ent.sum(axis=1), axis=0)*100
mecenat_taille_ent_perc = mecenat_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(mecenat_taille_ent_perc)

# plot bar chart
mecenat_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur le mécénat de compétences en fonction de leur taille")
question_36_mecenat Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 47.115385 28.846154 24.038462
PME 25.835866 33.738602 40.425532
ETI 44.230769 29.326923 26.442308
Grand groupe 47.826087 34.782609 17.391304
Out[ ]:
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur le mécénat de compétences en fonction de leur taille")
In [ ]:
mecenat_taille_ent
Out[ ]:
question_36_mecenat Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 49 30 25
PME 85 111 133
ETI 92 61 55
Grand groupe 22 16 8

Questions 36.2&2 : Degré d'avancement des entreprises répondantes sur les collectes de matériel ou produits en fonction de leur taille¶

In [ ]:
collect_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_collects']]
collect_taille_ent.head()
Out[ ]:
categ_taille_entreprises question_36_collects
102 PME Nous réfléchissons à nous engager
93 PME Nous réfléchissons à nous engager
88 ETI Nous le faisons déjà
78 TPE Nous le faisons déjà
84 TPE Nous réfléchissons à nous engager
In [ ]:
# Tableau croisé 36.2/2
collect_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_collects)
collect_taille_ent = collect_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
collect_taille_ent = collect_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
collect_taille_ent

# En pourcentage
collect_taille_ent_perc = collect_taille_ent.div(collect_taille_ent.sum(axis=1), axis=0)*100
collect_taille_ent_perc = collect_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(collect_taille_ent_perc)

# plot bar chart
collect_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur les collectes de matériel ou produits en fonction de leur taille")
question_36_collects Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 25.000000 30.000000 45.000000
PME 47.838617 23.054755 29.106628
ETI 73.271889 12.903226 13.824885
Grand groupe 86.363636 9.090909 4.545455
Out[ ]:
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur les collectes de matériel ou produits en fonction de leur taille")
In [ ]:
collect_taille_ent
Out[ ]:
question_36_collects Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 25 30 45
PME 166 80 101
ETI 159 28 30
Grand groupe 38 4 2

Questions 36.3&2 : Degré d'avancement des entreprises répondantes sur le mentorat en fonction de leur taille¶

In [ ]:
mentorat_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_mentorat']]
mentorat_taille_ent.head()
Out[ ]:
categ_taille_entreprises question_36_mentorat
102 PME Ce n'est pas prévu
93 PME Nous réfléchissons à nous engager
88 ETI Nous le faisons déjà
78 TPE Nous réfléchissons à nous engager
84 TPE Nous le faisons déjà
In [ ]:
# Tableau croisé 36.3/2
mentorat_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_mentorat)
mentorat_taille_ent = mentorat_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
mentorat_taille_ent = mentorat_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
mentorat_taille_ent

# En pourcentage
mentorat_taille_ent_perc = mentorat_taille_ent.div(mentorat_taille_ent.sum(axis=1), axis=0)*100
mentorat_taille_ent_perc = mentorat_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(mentorat_taille_ent_perc)

# plot bar chart
mentorat_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur le mentorat en fonction de leur taille")
question_36_mentorat Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 46.078431 28.431373 25.490196
PME 33.432836 31.641791 34.925373
ETI 49.528302 25.471698 25.000000
Grand groupe 63.043478 30.434783 6.521739
Out[ ]:
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur le mentorat en fonction de leur taille")
In [ ]:
mentorat_taille_ent
Out[ ]:
question_36_mentorat Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 47 29 26
PME 112 106 117
ETI 105 54 53
Grand groupe 29 14 3

Questions 36.4&2 : Degré d'avancement des entreprises répondantes sur les missions coup de pouce en association en fonction de leur taille¶

In [ ]:
missions_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_missions']]
missions_taille_ent.head()

# Tableau croisé 36.4/2
missions_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_missions)
missions_taille_ent = missions_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
missions_taille_ent = missions_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)

# En pourcentage
missions_taille_ent_perc = missions_taille_ent.div(missions_taille_ent.sum(axis=1), axis=0)*100
missions_taille_ent_perc = missions_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(missions_taille_ent_perc)

# plot bar chart
missions_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur les missions coup de pouce en association en fonction de leur taille")
question_36_missions Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 38.000000 34.000000 28.000000
PME 30.513595 29.909366 39.577039
ETI 46.859903 25.603865 27.536232
Grand groupe 59.090909 22.727273 18.181818
Out[ ]:
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur les missions coup de pouce en association en fonction de leur taille")
In [ ]:
missions_taille_ent
Out[ ]:
question_36_missions Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 38 34 28
PME 101 99 131
ETI 97 53 57
Grand groupe 26 10 8

Questions 36.5&2 : Degré d'avancement des entreprises répondantes sur les dons financiers et arrondi sur salaire en fonction de leur taille¶

In [ ]:
dons_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_dons']]
dons_taille_ent.head()

# Tableau croisé 36.5/2
dons_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_dons)
dons_taille_ent = dons_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
dons_taille_ent = dons_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)

# En pourcentage
dons_taille_ent_perc = dons_taille_ent.div(dons_taille_ent.sum(axis=1), axis=0)*100
dons_taille_ent_perc = dons_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(dons_taille_ent_perc)

# plot bar chart
dons_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur les dons financiers et arrondi sur salaire en fonction de leur taille")
question_36_dons Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 26.470588 21.568627 51.960784
PME 24.770642 18.042813 57.186544
ETI 31.428571 20.476190 48.095238
Grand groupe 47.727273 13.636364 38.636364
Out[ ]:
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur les dons financiers et arrondi sur salaire en fonction de leur taille")
In [ ]:
dons_taille_ent
Out[ ]:
question_36_dons Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 27 22 53
PME 81 59 187
ETI 66 43 101
Grand groupe 21 6 17

Questions 36.6&2 : Degré d'avancement des entreprises répondantes sur les appels à projets en fonction de leur taille¶

In [ ]:
projet_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_projet']]
projet_taille_ent.head()

# Tableau croisé 36.6/2
projet_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_projet)
projet_taille_ent = projet_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
projet_taille_ent = projet_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)

# En pourcentage
projet_taille_ent_perc = projet_taille_ent.div(projet_taille_ent.sum(axis=1), axis=0)*100
projet_taille_ent_perc = projet_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(projet_taille_ent_perc)

# plot bar chart
projet_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur les appels à projets en fonction de leur taille")
question_36_projet Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 12.087912 23.076923 64.835165
PME 15.112540 18.649518 66.237942
ETI 31.343284 20.398010 48.258706
Grand groupe 63.636364 11.363636 25.000000
Out[ ]:
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur les appels à projets en fonction de leur taille")
In [ ]:
projet_taille_ent
Out[ ]:
question_36_projet Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 11 21 59
PME 47 58 206
ETI 63 41 97
Grand groupe 28 5 11

Questions 36.7&2 : Degré d'avancement des entreprises répondantes sur les événements caritatifs en fonction de leur taille¶

In [ ]:
event_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_events']]
event_taille_ent.head()

# Tableau croisé 36.7/2
event_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_events)
event_taille_ent = event_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
event_taille_ent = event_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)

# En pourcentage
event_taille_ent_perc = event_taille_ent.div(event_taille_ent.sum(axis=1), axis=0)*100
event_taille_ent_perc = event_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(event_taille_ent_perc)

# plot bar chart
event_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur les événements caritatifs en fonction de leur taille")
question_36_events Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 27.551020 35.714286 36.734694
PME 40.175953 29.032258 30.791789
ETI 66.071429 18.303571 15.625000
Grand groupe 79.166667 16.666667 4.166667
Out[ ]:
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur les événements caritatifs en fonction de leur taille")
In [ ]:
event_taille_ent
Out[ ]:
question_36_events Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 27 35 36
PME 137 99 105
ETI 148 41 35
Grand groupe 38 8 2

Questions 36.8&2 : Degré d'avancement des entreprises répondantes sur les team-buidling solidaires en fonction de leur taille¶

In [ ]:
teamb_taille_ent = df_2022[['categ_taille_entreprises', 'question_36_teamB']]
teamb_taille_ent.head()

# Tableau croisé 36.8/2
teamb_taille_ent = pd.crosstab(df_2022.categ_taille_entreprises, df_2022.question_36_teamB)
teamb_taille_ent = teamb_taille_ent.reindex(["TPE", "PME", "ETI", "Grand groupe"])
teamb_taille_ent = teamb_taille_ent.reindex(["Nous le faisons déjà", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)

# En pourcentage
teamb_taille_ent_perc = teamb_taille_ent.div(teamb_taille_ent.sum(axis=1), axis=0)*100
teamb_taille_ent_perc = teamb_taille_ent_perc.reindex(["TPE", "PME", "ETI", "Grand groupe"])
display(teamb_taille_ent_perc)

# plot bar chart
teamb_taille_ent_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Degré d'avancement des entreprises répondantes sur les team-buidling solidaires en fonction de leur taille")
question_36_teamB Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 22.222222 36.363636 41.414141
PME 19.565217 38.198758 42.236025
ETI 30.845771 35.323383 33.830846
Grand groupe 55.000000 27.500000 17.500000
Out[ ]:
Text(0.5, 1.0, "Degré d'avancement des entreprises répondantes sur les team-buidling solidaires en fonction de leur taille")
In [ ]:
teamb_taille_ent
Out[ ]:
question_36_teamB Nous le faisons déjà Nous réfléchissons à nous engager Ce n'est pas prévu
categ_taille_entreprises
TPE 22 36 41
PME 63 123 136
ETI 62 71 68
Grand groupe 22 11 7

Questions 37&2 : Thématiques d'engagement les plus plébiscitées par tailles d'entreprises¶

In [ ]:
crossed_37_2 = df_2022[["categ_taille_entreprises", 'question_37_aide', 'question_37_art', 'question_37_education', 'question_37_egalite', 'question_37_emploi', 'question_37_entreprenariat', 'question_37_environnement', 'question_37_handicap', 'question_37_lien', 'question_37_lutte', 'question_37_pauvrete', 'question_37_protection', 'question_37_sante', 'question_37_solidarite']]
crossed_37_2.head()
Out[ ]:
categ_taille_entreprises question_37_aide question_37_art question_37_education question_37_egalite question_37_emploi question_37_entreprenariat question_37_environnement question_37_handicap question_37_lien question_37_lutte question_37_pauvrete question_37_protection question_37_sante question_37_solidarite
102 PME Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu NaN Ce n'est pas prévu Ce n'est pas prévu Nous menons quelques actions Nous menons quelques actions Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu Ce n'est pas prévu
93 PME Ce n'est pas prévu Nous menons quelques actions C’est un axe clé Nous menons quelques actions Nous menons quelques actions Ce n'est pas prévu Nous réfléchissons à nous engager Nous réfléchissons à nous engager NaN Nous réfléchissons à nous engager Nous réfléchissons à nous engager Ce n'est pas prévu Nous réfléchissons à nous engager Ce n'est pas prévu
88 ETI Nous menons quelques actions NaN Nous menons quelques actions Nous réfléchissons à nous engager Nous menons quelques actions Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous menons quelques actions Nous réfléchissons à nous engager Nous réfléchissons à nous engager Ce n'est pas prévu Nous menons quelques actions Ce n'est pas prévu
78 TPE Nous réfléchissons à nous engager Nous menons quelques actions Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous menons quelques actions Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager
84 TPE Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager C’est un axe clé Nous réfléchissons à nous engager Nous réfléchissons à nous engager C’est un axe clé Nous réfléchissons à nous engager C’est un axe clé Nous réfléchissons à nous engager Nous réfléchissons à nous engager Nous réfléchissons à nous engager C’est un axe clé
In [ ]:
# Pour les TPE
crossed_37_2_tpe = crossed_37_2.loc[crossed_37_2['categ_taille_entreprises'] == 'TPE']
crossed_37_2_tpe = crossed_37_2_tpe[['question_37_aide', 'question_37_art', 'question_37_education', 'question_37_egalite', 'question_37_emploi', 'question_37_entreprenariat', 'question_37_environnement', 'question_37_handicap', 'question_37_lien', 'question_37_lutte', 'question_37_pauvrete', 'question_37_protection', 'question_37_sante', 'question_37_solidarite']]

# Pivot de la table
crossed_37_2_tpe = crossed_37_2_tpe.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_37_2_tpe = crossed_37_2_tpe.reset_index()
crossed_37_2_tpe.rename(columns={'index':'Actions'}, inplace=True)
crossed_37_2_tpe = crossed_37_2_tpe.pivot_table(columns='Actions')
crossed_37_2_tpe = crossed_37_2_tpe.reindex(["C’est un axe clé", "Nous menons quelques actions", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
display(crossed_37_2_tpe)

# En pourcentage
crossed_37_2_tpe_perc = crossed_37_2_tpe.div(crossed_37_2_tpe.sum(axis=1), axis=0)*100
crossed_37_2_tpe_perc = crossed_37_2_tpe_perc.sort_values(by="C’est un axe clé")
display(crossed_37_2_tpe_perc)

# plot bar chart
crossed_37_2_tpe_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Thématiques d'engagement les plus plébiscitées dans les TPE")
plt.show()
Actions C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 4 13 16 65
question_37_art 6 20 24 47
question_37_education 23 23 29 27
question_37_egalite 23 12 21 42
question_37_emploi 27 27 21 27
question_37_entreprenariat 24 23 26 24
question_37_environnement 40 34 27 10
question_37_handicap 19 17 32 32
question_37_lien 16 10 28 43
question_37_lutte 26 20 23 32
question_37_pauvrete 13 18 22 44
question_37_protection 8 12 16 61
question_37_sante 20 19 21 40
question_37_solidarite 9 15 21 53
Actions C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 4.081633 13.265306 16.326531 66.326531
question_37_art 6.185567 20.618557 24.742268 48.453608
question_37_protection 8.247423 12.371134 16.494845 62.886598
question_37_solidarite 9.183673 15.306122 21.428571 54.081633
question_37_pauvrete 13.402062 18.556701 22.680412 45.360825
question_37_lien 16.494845 10.309278 28.865979 44.329897
question_37_handicap 19.000000 17.000000 32.000000 32.000000
question_37_sante 20.000000 19.000000 21.000000 40.000000
question_37_education 22.549020 22.549020 28.431373 26.470588
question_37_egalite 23.469388 12.244898 21.428571 42.857143
question_37_entreprenariat 24.742268 23.711340 26.804124 24.742268
question_37_lutte 25.742574 19.801980 22.772277 31.683168
question_37_emploi 26.470588 26.470588 20.588235 26.470588
question_37_environnement 36.036036 30.630631 24.324324 9.009009
In [ ]:
display(crossed_37_2_tpe_perc)
Actions C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 4.081633 13.265306 16.326531 66.326531
question_37_art 6.185567 20.618557 24.742268 48.453608
question_37_protection 8.247423 12.371134 16.494845 62.886598
question_37_solidarite 9.183673 15.306122 21.428571 54.081633
question_37_pauvrete 13.402062 18.556701 22.680412 45.360825
question_37_lien 16.494845 10.309278 28.865979 44.329897
question_37_handicap 19.000000 17.000000 32.000000 32.000000
question_37_sante 20.000000 19.000000 21.000000 40.000000
question_37_education 22.549020 22.549020 28.431373 26.470588
question_37_egalite 23.469388 12.244898 21.428571 42.857143
question_37_entreprenariat 24.742268 23.711340 26.804124 24.742268
question_37_lutte 25.742574 19.801980 22.772277 31.683168
question_37_emploi 26.470588 26.470588 20.588235 26.470588
question_37_environnement 36.036036 30.630631 24.324324 9.009009
In [ ]:
# Pour les PME
crossed_37_2_pme = crossed_37_2.loc[crossed_37_2['categ_taille_entreprises'] == 'PME']
crossed_37_2_pme = crossed_37_2_pme[['question_37_aide', 'question_37_art', 'question_37_education', 'question_37_egalite', 'question_37_emploi', 'question_37_entreprenariat', 'question_37_environnement', 'question_37_handicap', 'question_37_lien', 'question_37_lutte', 'question_37_pauvrete', 'question_37_protection', 'question_37_sante', 'question_37_solidarite']]

# Pivot de la table
crossed_37_2_pme = crossed_37_2_pme.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_37_2_pme = crossed_37_2_pme.reset_index()
crossed_37_2_pme.rename(columns={'index':'Actions'}, inplace=True)
crossed_37_2_pme = crossed_37_2_pme.pivot_table(columns='Actions')
crossed_37_2_pme = crossed_37_2_pme.reindex(["C’est un axe clé", "Nous menons quelques actions", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
display(crossed_37_2_pme)

# En pourcentage
crossed_37_2_pme_perc = crossed_37_2_pme.div(crossed_37_2_pme.sum(axis=1), axis=0)*100
crossed_37_2_pme_perc = crossed_37_2_pme_perc.sort_values(by="C’est un axe clé")
display(crossed_37_2_pme_perc)

# plot bar chart
crossed_37_2_pme_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Thématiques d'engagement les plus plébiscitées dans les PME")
plt.show()
Actions C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 11 60 49 200
question_37_art 21 52 30 214
question_37_education 54 91 72 111
question_37_egalite 49 71 64 135
question_37_emploi 63 98 70 101
question_37_entreprenariat 37 48 59 171
question_37_environnement 105 94 84 66
question_37_handicap 40 80 99 107
question_37_lien 20 49 74 182
question_37_lutte 49 74 76 135
question_37_pauvrete 36 65 68 150
question_37_protection 14 30 56 209
question_37_sante 54 71 72 127
question_37_solidarite 18 63 60 176
Actions C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 3.437500 18.750000 15.312500 62.500000
question_37_protection 4.530744 9.708738 18.122977 67.637540
question_37_solidarite 5.678233 19.873817 18.927445 55.520505
question_37_lien 6.153846 15.076923 22.769231 56.000000
question_37_art 6.624606 16.403785 9.463722 67.507886
question_37_pauvrete 11.285266 20.376176 21.316614 47.021944
question_37_entreprenariat 11.746032 15.238095 18.730159 54.285714
question_37_handicap 12.269939 24.539877 30.368098 32.822086
question_37_lutte 14.670659 22.155689 22.754491 40.419162
question_37_egalite 15.360502 22.257053 20.062696 42.319749
question_37_education 16.463415 27.743902 21.951220 33.841463
question_37_sante 16.666667 21.913580 22.222222 39.197531
question_37_emploi 18.975904 29.518072 21.084337 30.421687
question_37_environnement 30.085960 26.934097 24.068768 18.911175
In [ ]:
display(crossed_37_2_pme_perc)
Actions C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 3.437500 18.750000 15.312500 62.500000
question_37_protection 4.530744 9.708738 18.122977 67.637540
question_37_solidarite 5.678233 19.873817 18.927445 55.520505
question_37_lien 6.153846 15.076923 22.769231 56.000000
question_37_art 6.624606 16.403785 9.463722 67.507886
question_37_pauvrete 11.285266 20.376176 21.316614 47.021944
question_37_entreprenariat 11.746032 15.238095 18.730159 54.285714
question_37_handicap 12.269939 24.539877 30.368098 32.822086
question_37_lutte 14.670659 22.155689 22.754491 40.419162
question_37_egalite 15.360502 22.257053 20.062696 42.319749
question_37_education 16.463415 27.743902 21.951220 33.841463
question_37_sante 16.666667 21.913580 22.222222 39.197531
question_37_emploi 18.975904 29.518072 21.084337 30.421687
question_37_environnement 30.085960 26.934097 24.068768 18.911175
In [ ]:
# Pour les ETI
crossed_37_2_eti = crossed_37_2.loc[crossed_37_2['categ_taille_entreprises'] == 'ETI']
crossed_37_2_eti = crossed_37_2_eti[['question_37_aide', 'question_37_art', 'question_37_education', 'question_37_egalite', 'question_37_emploi', 'question_37_entreprenariat', 'question_37_environnement', 'question_37_handicap', 'question_37_lien', 'question_37_lutte', 'question_37_pauvrete', 'question_37_protection', 'question_37_sante', 'question_37_solidarite']]

# Pivot de la table
crossed_37_2_eti = crossed_37_2_eti.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_37_2_eti = crossed_37_2_eti.reset_index()
crossed_37_2_eti.rename(columns={'index':'Actions'}, inplace=True)
crossed_37_2_eti = crossed_37_2_eti.pivot_table(columns='Actions')
crossed_37_2_eti = crossed_37_2_eti.reindex(["C’est un axe clé", "Nous menons quelques actions", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
display(crossed_37_2_eti)

# En pourcentage
crossed_37_2_eti_perc = crossed_37_2_eti.div(crossed_37_2_eti.sum(axis=1), axis=0)*100
crossed_37_2_eti_perc = crossed_37_2_eti_perc.sort_values(by="C’est un axe clé")
display(crossed_37_2_eti_perc)

# plot bar chart
crossed_37_2_eti_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Thématiques d'engagement les plus plébiscitées dans les ETI")
plt.show()
Actions C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 14 65 11 118
question_37_art 20 45 11 127
question_37_education 60 71 36 44
question_37_egalite 50 59 30 68
question_37_emploi 70 75 29 31
question_37_entreprenariat 25 45 33 92
question_37_environnement 75 64 48 30
question_37_handicap 64 82 41 25
question_37_lien 14 38 44 97
question_37_lutte 39 69 41 53
question_37_pauvrete 33 56 40 71
question_37_protection 6 19 24 149
question_37_sante 55 82 28 38
question_37_solidarite 21 66 31 84
Actions C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_protection 3.030303 9.595960 12.121212 75.252525
question_37_aide 6.730769 31.250000 5.288462 56.730769
question_37_lien 7.253886 19.689119 22.797927 50.259067
question_37_art 9.852217 22.167488 5.418719 62.561576
question_37_solidarite 10.396040 32.673267 15.346535 41.584158
question_37_entreprenariat 12.820513 23.076923 16.923077 47.179487
question_37_pauvrete 16.500000 28.000000 20.000000 35.500000
question_37_lutte 19.306931 34.158416 20.297030 26.237624
question_37_egalite 24.154589 28.502415 14.492754 32.850242
question_37_sante 27.093596 40.394089 13.793103 18.719212
question_37_education 28.436019 33.649289 17.061611 20.853081
question_37_handicap 30.188679 38.679245 19.339623 11.792453
question_37_emploi 34.146341 36.585366 14.146341 15.121951
question_37_environnement 34.562212 29.493088 22.119816 13.824885
In [ ]:
display(crossed_37_2_eti_perc)
Actions C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_protection 3.030303 9.595960 12.121212 75.252525
question_37_aide 6.730769 31.250000 5.288462 56.730769
question_37_lien 7.253886 19.689119 22.797927 50.259067
question_37_art 9.852217 22.167488 5.418719 62.561576
question_37_solidarite 10.396040 32.673267 15.346535 41.584158
question_37_entreprenariat 12.820513 23.076923 16.923077 47.179487
question_37_pauvrete 16.500000 28.000000 20.000000 35.500000
question_37_lutte 19.306931 34.158416 20.297030 26.237624
question_37_egalite 24.154589 28.502415 14.492754 32.850242
question_37_sante 27.093596 40.394089 13.793103 18.719212
question_37_education 28.436019 33.649289 17.061611 20.853081
question_37_handicap 30.188679 38.679245 19.339623 11.792453
question_37_emploi 34.146341 36.585366 14.146341 15.121951
question_37_environnement 34.562212 29.493088 22.119816 13.824885
In [ ]:
# Pour les GG
crossed_37_2_gg = crossed_37_2.loc[crossed_37_2['categ_taille_entreprises'] == 'Grand groupe']
crossed_37_2_gg = crossed_37_2_gg[['question_37_aide', 'question_37_art', 'question_37_education', 'question_37_egalite', 'question_37_emploi', 'question_37_entreprenariat', 'question_37_environnement', 'question_37_handicap', 'question_37_lien', 'question_37_lutte', 'question_37_pauvrete', 'question_37_protection', 'question_37_sante', 'question_37_solidarite']]

# Pivot de la table
crossed_37_2_gg = crossed_37_2_gg.apply(pd.Series.value_counts).fillna(0).astype(int)
crossed_37_2_gg = crossed_37_2_gg.reset_index()
crossed_37_2_gg.rename(columns={'index':'Actions'}, inplace=True)
crossed_37_2_gg = crossed_37_2_gg.pivot_table(columns='Actions')
crossed_37_2_gg = crossed_37_2_gg.reindex(["C’est un axe clé", "Nous menons quelques actions", "Nous réfléchissons à nous engager", "Ce n'est pas prévu"], axis=1)
display(crossed_37_2_gg)

# En pourcentage
crossed_37_2_gg_perc = crossed_37_2_gg.div(crossed_37_2_gg.sum(axis=1), axis=0)*100
crossed_37_2_gg_perc = crossed_37_2_gg_perc.sort_values(by="C’est un axe clé")
display(crossed_37_2_gg_perc)

# plot bar chart
crossed_37_2_gg_perc.plot(kind='bar', stacked=True)
plt.legend(bbox_to_anchor=(1.4, 1))
plt.title("Thématiques d'engagement les plus plébiscitées dans les Grands groupes")
plt.show()
Actions C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 3 23 3 14
question_37_art 5 11 3 23
question_37_education 22 16 5 2
question_37_egalite 15 15 5 8
question_37_emploi 22 15 4 5
question_37_entreprenariat 12 12 4 16
question_37_environnement 25 15 4 5
question_37_handicap 27 15 4 2
question_37_lien 7 14 8 12
question_37_lutte 15 16 4 6
question_37_pauvrete 13 16 6 9
question_37_protection 5 6 5 23
question_37_sante 18 17 4 4
question_37_solidarite 8 25 4 7
Actions C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 6.976744 53.488372 6.976744 32.558140
question_37_art 11.904762 26.190476 7.142857 54.761905
question_37_protection 12.820513 15.384615 12.820513 58.974359
question_37_lien 17.073171 34.146341 19.512195 29.268293
question_37_solidarite 18.181818 56.818182 9.090909 15.909091
question_37_entreprenariat 27.272727 27.272727 9.090909 36.363636
question_37_pauvrete 29.545455 36.363636 13.636364 20.454545
question_37_egalite 34.883721 34.883721 11.627907 18.604651
question_37_lutte 36.585366 39.024390 9.756098 14.634146
question_37_sante 41.860465 39.534884 9.302326 9.302326
question_37_emploi 47.826087 32.608696 8.695652 10.869565
question_37_education 48.888889 35.555556 11.111111 4.444444
question_37_environnement 51.020408 30.612245 8.163265 10.204082
question_37_handicap 56.250000 31.250000 8.333333 4.166667
In [ ]:
display(crossed_37_2_gg_perc)
Actions C’est un axe clé Nous menons quelques actions Nous réfléchissons à nous engager Ce n'est pas prévu
question_37_aide 6.976744 53.488372 6.976744 32.558140
question_37_art 11.904762 26.190476 7.142857 54.761905
question_37_protection 12.820513 15.384615 12.820513 58.974359
question_37_lien 17.073171 34.146341 19.512195 29.268293
question_37_solidarite 18.181818 56.818182 9.090909 15.909091
question_37_entreprenariat 27.272727 27.272727 9.090909 36.363636
question_37_pauvrete 29.545455 36.363636 13.636364 20.454545
question_37_egalite 34.883721 34.883721 11.627907 18.604651
question_37_lutte 36.585366 39.024390 9.756098 14.634146
question_37_sante 41.860465 39.534884 9.302326 9.302326
question_37_emploi 47.826087 32.608696 8.695652 10.869565
question_37_education 48.888889 35.555556 11.111111 4.444444
question_37_environnement 51.020408 30.612245 8.163265 10.204082
question_37_handicap 56.250000 31.250000 8.333333 4.166667